Sziasztok!
A házi szerveremen szeretném beállítani a suphp-t de nem igazán működik.
Debian Etch + Apache 2.2, MySQL5, PHP5 fut rajta.
a suphp-t csomagból telepítettem:
apt-get install libapache2-mod-suphp php5-cgi
/etc/apache2/mods-enabled/suphp.conf :
<IfModule mod_suphp.c>
AddHandler x-httpd-php .php .php3 .php4 .php5 .phtml
suPHP_AddHandler x-httpd-php
suPHP_Engine on
</IfModule>
# /etc/init.d/apahce2 force-reload
így állítottam be, mire Internal Server Error lett a válasz
minden howto amit találtam forrásból telepíti a suphp-t amit megcsinálok ha muszáj, de nem sok kedvem van hozzá, főleg mert azt gondolom hogy a Debian csomagokkal nem szokott gond lenni, így inkább valószínűleg én szúrtam el a configolást valahol. A kérdés csak az hogy hol... Vagy kihagytam valamit?
Köszi a segítséget!
- 2993 megtekintés
Hozzászólások
megpróbáltam:
fordítás, telepítés:
#a2dismod php5
#/etc/init.d/apache2 force-reload
#apt-get install apache-prefork-dev (egy egész csomó csomag felment)
#cd /tmp
#wget http://www.suphp.org/download/suphp-0.6.2.tar.gz
#tar xvfz suphp-0.6.2.tar.gz
#cd suphp-0.6.2/
#nano src/apache2/mod_suphp.c
ACCESS_CONF csere erre: RSRC_CONF | ACCESS_CONF
az APT_INIT_ITERATE kezdetű sorokban
#./configure --prefix=/usr --sysconfdir=/etc --with-apache-user=www-data --with-setid-mode=paranoid --with-apxs=/usr/bin/apxs2
#make
#make install
Beállítások, configfájlok:
#cp /tmp/suphp-0.6.2/doc/suphp.conf-example /etc/suphp.conf
#nano /etc/suphp.conf
[global]
;Path to logfile
logfile=/var/log/suphp.log
;Loglevel
loglevel=info
;User Apache is running as
webserver_user=www-data
;Path all scripts have to be in
docroot=/
;Path to chroot() to before executing script
;chroot=/mychroot
; Security options
allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false
;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true
;Send minor error messages to browser
errors_to_browser=false
;PATH environment variable
env_path=/bin:/usr/bin
;Umask to set, specify in octal notation
umask=0077
; Minimum UID
min_uid=100
; Minimum GID
min_gid=100
[handlers]
;Handler for php-scripts
x-httpd-php=php:/usr/bin/php5-cgi
;Handler for CGI-scripts
x-suphp-cgi=execute:!self
#nano /etc/httpd.conf
LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so
#a2enmod php5
#/etc/init.d/apache2 force reload
#nano/etc/apache2/sites-avaliable/default
<VirtualHost *>
ServerName www.example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/www
suPHP_Engine on
suPHP_UserGroup testuser test
AddHandler x-httpd-php .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-php
<itt még van csomó bejegyzés>
</VirtualHost>
#/etc/init.d/apache2 restart
Internal Server Error
talán az lehet a baj hogy ez a howto eggyel korábbi suphp-hoz és Sarge Debianhoz szól? van valakinek tanácsa hogy mit javítsak még ki?
miért nem működik a csomagból telepített suphp? miért fontos lefordítani?
köszi a segítséget
-----------------------------
Ubuntu Gutsy Gibbon
- A hozzászóláshoz be kell jelentkezni
apache error.log:
[error][client] (2) No such file or directory couldn't create child process: /usr/sbin/suphp for /var/www/index.html
-----------------------------
Ubuntu Gutsy Gibbon
- A hozzászóláshoz be kell jelentkezni
ha suphp-d van miért akarsz .html -t phpvel futtatni ?
Core2Duo T7100, 2.5G, Ubuntu 7.10, 2.6.22
- A hozzászóláshoz be kell jelentkezni
nem akarok :-) csak épp most tanulom a dolgot. De ha van valami javaslatod, szívesen fogadom.
-----------------------------
Ubuntu Gutsy Gibbon
- A hozzászóláshoz be kell jelentkezni
apache suphp modul betöltve ?
site konfigba kell a suphp on valamint én megadom hogy hol éri el a php.ini-t
suPHP_ConfigPath ezzel
és megy jól
Core2Duo T7100, 2.5G, Ubuntu 7.10, 2.6.22
- A hozzászóláshoz be kell jelentkezni
beírtam a /sites-avaliable/default -ba hogy
suPHP_ConfigPath /etc/php5/apache2/php.ini
de a baj már korábban van: a2enmod suphp
ilyen modul nem létezik!
pedig igazán igyekeztem feltelepíteni. mi a gond? a mods-avaliable -ba hogy fog bekerülni egy ilyen modul?
a howto egy szót se írt erről.
-----------------------------
Ubuntu Gutsy Gibbon
- A hozzászóláshoz be kell jelentkezni
PATH nál ahogy írja útvonalat kell megadni nem fájlt szóval csak /etc/php5/apache2/ add meg
a modult meg átlinkeled a avaible dirbe és kész át is másolhatod de a link jobb :>
Core2Duo T7100, 2.5G, Ubuntu 7.10, 2.6.22
- A hozzászóláshoz be kell jelentkezni
kösz, átlinkeltem, most már be tudja olvasni azaz az a2enmodra azt mondja oké.
ha a sites-avaliable/default -ban a következő sor nincs kikommentezve akkor még mindig internal error van, a többivel nincs gond:
AddHandler x-httpd-php .php .php3 .php4 .php5
viszont akár ezzel van a gond, akár nem, még mindig nem írhatóak a fájlok a webszerverrel, annak ellenére, hogy most már engedi bekapcsolni a modult, látszik is a mods-enabled-ben.
-----------------------------
Ubuntu Gutsy Gibbon
- A hozzászóláshoz be kell jelentkezni
nahh nálam ez úgy megy, hogy vannak userek saját uid el, ftp loginnal pl pistike
ekkor ugye pistike pistike:pistike jogokkal teszi le az fájljait. Ekkor a conpath nak megadom hogy a /etc/php5/users/pistike dirben van a php.ini így a php-cgi pistike uid al fut. Ezért minden fájlt tud írni a php, és nem kell 777 jog pl fájlokra. sőt ha valamin akár csak group írási jog van a suphp nem is fut mivel alapból úgy van beállítva hogyha ilyen van akkor szóljon.
Core2Duo T7100, 2.5G, Ubuntu 7.10, 2.6.22
- A hozzászóláshoz be kell jelentkezni
Ha a sites-avaliable/default -ból eltávolítom a suphp-ra vonatkozó sorokat:
suPHP_Engine on
suPHP_UserGroup elephant elephant
AddHandler x-httpd-php .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-php
akkor elmúlik az internal error, de nem működik a modul. gondolom akkor ez a hibás bejegyzés, de mi vele a baj?
-----------------------------
Ubuntu Gutsy Gibbon
- A hozzászóláshoz be kell jelentkezni
Hát jó. Azt hiszem ezt feladom.
Van azért egy kérdésem: ha az egész cuccot átadom a www-data tulajdonába, hogy békén írogathasson bele, az biztonsági résnek számít? gondolom nem, csak kicsit kényelmetlen konzolból mert nem férek hozzá.
És a másik kérdésem az, hogy egy lefordított programot hogyan kell eltávolítani? Bármit írok be a googleba, mindig csak azt írja hogy hogyan kell telepíteni...
köszi
-----------------------------
Ubuntu Gutsy Gibbon
- A hozzászóláshoz be kell jelentkezni
Most kezdek átállni fcgid+suphp-ra és felmerült egy kérdés:
Az apache webszerver apache:apache (uid:gid) joggal fut.
Benne lévő virtualhost: suPHP_UserGroup ftpuser ftpgroup
Fájlok ftpuser:ftpgroup tulajdonában vannak.
A suphp.log szerint a php-k ftpuser:ftpgrouppal lefutnak, chmod 600-as fájl joggal is gond nélkül.
Problémám a képekkel van. Ott már olvasási jog kell az apache usernek is, különben nem tölti be.
A sessionokat nagyon helyesen ftpuser:ftpgroup 600-as joggal létrehozza a temp mappában.
Értem én, hogy a php-kat futtatja más userrel, de ha ebben a php-ban van egy képbehívás, miért nem éri el? A benne lévő html tag miatt? Úgy tünik, hogy a képeket már az apache-ot futtato apache:apache-al akarja elérni.
Van erre valami trükk?
- A hozzászóláshoz be kell jelentkezni
a statikus fajlokat nem kell hogy a php ertelmezo elofeldolgozza, ezert nem kerul at a vezerles a suphp-nak.
3 dolgot csinalhatsz,
adsz readet az apache usernek a fajlokra
atallitod, hogy a php parser a kep kiterjesztesu fajlokra is rafusson (ez ocsmany semmikepp se)
beallitod, hogy virtualhostonkent eltero userrel fusson az apache. szerintem lehet ilyet.
ebben az esetben ugyanazzal a userrel fusson, mint amivel a suphp fut ahhoz a userhez.
amugy mintha mod_itk is ilyesmit csinalna, es akkor nem kellene suphp sem.
Tyrael
- A hozzászóláshoz be kell jelentkezni
Tetszik a mod_itk az alapján amit írtál.
Ezt találtam: http://apachehacker.com/kabir/access-control/running-virtual-hosts-unde…
Viszont attól tartok, hogy ehhez valós UNIX user kell.
suphp-hoz nem szükséges szerencsére.
Lehet marad akkor suphp + chmod 640 10000:apache, 10001:apache jogokkal a vhostokban.
- A hozzászóláshoz be kell jelentkezni
Jól érzékelem, hogyha fcgid wrapperben megadom a php.ini helyét, akkor a suphp ezt felülértelmezi és alapesetben a wrapper mellett majd a docrootban keresi?
Amint pedig beállítom:
suPHP_ConfigPath /etc/php/cgi-php5/1.ini
Attól kezdve elsődlegesen itt keresi, ha nincs akkor használja a docrootban lévő php.ini-t.
Ettől kezdve a wrapperben lévő "export PHPRC=/var/www/domain.hu/teszt/1.ini" sor felesleges?
update: Vmi nem kerek itt.
Az fcgid és suphp modul betöltve. Egy adott virtualhostba irtam be a kovetkezoket:
1.eset
AddHandler fcgid-script .php
FCGIWrapper /var/www/domain.hu/teszt/php-cgi .php
A wrapperen keresztül bejön a php. Ha a wrapperbe másik php.ini-t irok, az új beállításokkal jön be.
(phpinfo() és a mem_limit-et változtattam)
Itt nincs suphp, eddig korrekt.
2. eset
Hozzáadom a suphp-t.
<IfModule mod_suphp.c>
suPHP_Engine on
suPHP_AddHandler fcgid-script
suPHP_UserGroup ftpuser ftpgroup
suPHP_ConfigPath /etc/php/cgi-php5/1.ini
</IfModule>
Semmi újdonság nem történik, mintha ezek a sorok ott sem lennének. A fájlokat apache userrel kezeli (ezzel fut az webserver)
3. eset
A suphp alapból a "x-httpd-fcgi"-t preferálná, így átírom arra az egészet:
suPHP_Engine on
suPHP_AddHandler x-httpd-fcgi
suPHP_UserGroup ftpuser ftpgroup
suPHP_ConfigPath /etc/php/cgi-php5/1.ini
AddHandler x-httpd-fcgi .php
AddHandler x-httpd-fcgi .php
FCGIWrapper /var/www/domain.hu/teszt/php-cgi .php
Mintha az utolsó 2 sor ott sem lenne, akár ki is vehetném. Csak a suphp megy. Jogok rendben, ftpuserrel kezeli a fájlokat, hisz azt adtam meg a suphp-nak.
Tehát az wrappernek semmi haszna nincs (defaultnak sincs). Kitörtölhetem az exec sort, akkor is bejön a php. Az 1-2. esetben reagált a benne lévő php.ini változtatásra, szándékos hibára, tehát_használta_. Nem úgy a 3. esetben.
Hogy lehetne a 2-t összehozni?
4. eset
Mind a 2-2 sort benne hagyom, akkor szórja a hibákat.
mod_mime_magic: can't read `/var/www/domain.hu/teszt/index.php'
[debug] arch/unix/fcgid_proc_unix.c(525): (111)Connection refused: mod_fcgid: can't connect unix domain socket: /var/run/fcgidsock/10793.7
Végezetül wrapper:
#!/bin/sh
export PHPRC=/var/www/domain.hu/teszt/1.ini
export PHP_FCGI_CHILDREN=4
export PHP_FCGI_MAX_REQUESTS=500
exec /usr/bin/php-cgi $@
Kérdésem: Miként lehetne a 2-t (fcgid+suphp) összehozni? Cél: egyéni php.ini, de megtartva a wrappert.
- A hozzászóláshoz be kell jelentkezni
subscribe
- A hozzászóláshoz be kell jelentkezni