Safe_Mode-Probs nach PHP-Upd von 4.3.11 auf 4.4.0

Apache, Lighttpd, nginx, Cherokee
Post Reply
mitmacher
Posts: 84
Joined: 2004-04-18 16:23
 

Safe_Mode-Probs nach PHP-Upd von 4.3.11 auf 4.4.0

Post by mitmacher »

Hi Forum,

ich habe hier eine komische Sache am Laufen:
Seit einigen PHP-Versionen kompiliere ich mir z.T. die aktuellste Version auf mehreren Servern (1&1-Rooties) problemlos selbst, und bis auf einen klappt es auch prima mit der jetzigen Version 4.4.0.

Mit diesem einen gibt es jedoch erhebliche Probleme. Sobald 4.4.0 aktiv ist, läuft zwar alles, und auch phpinfo.php ist vollkommen korrekt, aber sobald ich auf einigen Domains folgenden Befehl ausführe, kommt eine Fehlermeldung und das war's.

Code: Select all

session_save_path('/home/htdocs/web1/phptmp');
Warning: session_save_path(): SAFE MODE Restriction in effect. The script whose uid is 639 is not allowed to access /home/htdocs/web1 owned by uid 0 in /home/htdocs/web1/html/include/session.inc.php on line 27
Aber das Verzeichnis '/home/htdocs/web1/phptmp' ist vorhanden mit den richtigen Rechten. Zumindest klappt es bis PHP 4.3.11 prima. Ansonsten habe ich nichts geändert an der Server-Config.
Irgendwie scheint der Safe_Mode-Mechanismus nun etwas restriktiver zu greifen, andererseits geht es auf 2 anderen Servern ja trotzdem, obwohl dort die Rechte konkret dieselben sind.

Momentan fiel mir nix anderes ein, ausser wieder die 4.3.11 zu aktivieren. Man könnte natürlich nun alle session_save_path-Befehle auf gültige Verzeichnisse umbiegen, aber das wären so einige, und wenn es nicht unbedingt sein muss, würde ich es gerne vermeiden... ;-)

Noch paar Daten:
- der Problem-Server hat SuSE 9.0 (die anderen SuSE 9.1)
- alle haben Confixx 3.09 mit beiden Hotfixes installiert
- alle haben den Kernel 2.6.11.9-050512a drauf
- alle haben sämtliche aktuellen YaST-Updates bekommen

- die Config-Zeile des Problemservers:

Code: Select all

./configure --prefix=/usr/share --datadir=/usr/share/php --bindir=/usr/bin --libdir=/usr/share --includedir=/usr/include --sysconfdir=/etc --with-_lib=lib --with-config-file-path=/etc --with-exec-dir=/usr/lib/php/bin --disable-debug --enable-bcmath --enable-calendar --enable-ctype --enable-dbase --enable-discard-path --enable-exif --enable-filepro --enable-force-cgi-redirect --enable-ftp --enable-gd-imgstrttf --enable-gd-native-ttf --enable-inline-optimization --enable-magic-quotes --enable-mbstr-enc-trans --enable-mbstring --enable-mbregex --enable-memory-limit --enable-safe-mode --enable-shmop --enable-sigchild --enable-sysvsem --enable-sysvshm --enable-track-vars --enable-trans-sid --enable-versioning --enable-wddx --enable-yp --with-bz2 --with-dom=/usr/include/libxml2 --with-ftp --with-gdbm --with-gettext --with-gmp --with-imap=yes --with-iodbc --with-jpeg-dir=/usr --with-mcal=/usr --with-mcrypt --with-mhash --with-mysql=/usr --with-ndbm --with-png-dir=/usr --with-t1lib --with-readline --with-snmp --with-tiff-dir=/usr --with-ttf --with-freetype-dir=yes --with-xml --with-zlib=yes --with-gd --with-openssl --with-curl --with-swf=/usr/src/packages/BUILD/swf/dist/ --with-imap-ssl --enable-xslt --with-xslt-sablot --with-iconv --with-apxs2=/usr/sbin/apxs2-prefork i586-suse-linux
- die Config-Zeile der anderen Server:

Code: Select all

./configure --prefix=/usr --datadir=/usr/share/php --mandir=/usr/share/man --bindir=/usr/bin --libdir=/usr/share --includedir=/usr/include --sysconfdir=/etc --with-_lib=lib --with-config-file-path=/etc --with-exec-dir=/usr/lib/php/bin --disable-debug --enable-inline-optimization --enable-memory-limit --enable-magic-quotes --enable-safe-mode --enable-sigchild --disable-ctype --disable-session --without-mysql --disable-cli --without-pear --with-openssl --with-png-dir=/usr --with-t1lib --with-tiff-dir=/usr --with-ttf --with-freetype-dir=yes --with-zlib=yes --with-jpeg-dir=/usr --with-gd --with-apxs2=/usr/sbin/apxs2-prefork i586-suse-linux
Also etwas kurios das Ganze...

Hat irgendwer evtl. eine Idee dazu? Bin für jeden Tipp dankbar... :-)

grüße
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53
 

Re: Safe_Mode-Probs nach PHP-Upd von 4.3.11 auf 4.4.0

Post by Roger Wilco »

mitMacher wrote:

Code: Select all

session_save_path('/home/htdocs/web1/phptmp');
Warning: session_save_path(): SAFE MODE Restriction in effect. The script whose uid is 639 is not allowed to access /home/htdocs/web1 owned by uid 0 in /home/htdocs/web1/html/include/session.inc.php on line 27
Aber das Verzeichnis '/home/htdocs/web1/phptmp' ist vorhanden mit den richtigen Rechten.
Wem gehört /home/htdocs/web1?
mitmacher
Posts: 84
Joined: 2004-04-18 16:23
 

Re: Safe_Mode-Probs nach PHP-Upd von 4.3.11 auf 4.4.0

Post by mitmacher »

Wem gehört /home/htdocs/web1?
das gehört root (uid 0, gid 0, 755), so wie es auch in der Meldung steht. Aber ich will ja in /home/htdocs/web1/phptmp schreiben, und das gehört dem User web1 (Gruppe www) mit den Rechten 770.
Warum also meckert PHP dann über /home/htdocs/web1 ???
mitmacher
Posts: 84
Joined: 2004-04-18 16:23
 

Re: Safe_Mode-Probs nach PHP-Upd von 4.3.11 auf 4.4.0

Post by mitmacher »

Heissa!

hab gerade eben selbst die lösung gefunden... :-)
fast peinlich, aber eigentlich auch nicht, da es ja nirgendwo explizit erwähnt wird.

Also, ganz einfach, statt:

Code: Select all

session_save_path('/home/htdocs/web1/phptmp');
muss es natürlich heissen:

Code: Select all

session_save_path('/home/htdocs/web1/phptmp/');
(der abschließende Slash hat gefehlt!)

dann geht es alles wieder wunderbar. Die Frage bleibt, was vorher passierte, aber scheinbar war es halt kein gültiges Verzeichnis, deswegen hat er trotzdem nach "/tmp/" geschrieben (Default). Die alte PHP-Version hat dann keinen Fehler gegeben, die neue (4.4.0) halt ja.

Hoffe, es hilft evtl. noch jemand anderem... ;-)
Post Reply