PHP5, SquirrelMail und safe_mode=on

Dany

Well-Known Member
Hallo Leute,

ich habe mir einen neuen FreeBSD Server aufgesetzt und wollte eigentlich in PHP safe_mode aktivieren.

Jetzt habe ich aber bereits die ersten Probleme mit SquirrelMail und der Übersetzung. Bei SquirrelMail wird die Übersetzung über gettext durchgeführt und dieses funktioniert nicht wenn ich safe_mode aktiviere. Ist der safe_mode auf off dann klappt alles, somit ist gettext auch vorhanden und auch eingebunden. So steht es auch in der phpinfo().

Folgende safe_mode Einstellungen habe ich vorgenommen:
safe_mode = On
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir = /usr/local/bin/phpsafemode/
safe_mode_allowed_env_vars = LC_ALL,LANG,LANGUAGE,PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
sql.safe_mode = Off

In das Verzeichnis /usr/local/bin/phpsafemode/ habe ich die folgende Programme gelinkt.
composite -> /usr/local/bin/composite
convert -> /usr/local/bin/convert
gettext -> /usr/local/bin/gettext
identify -> /usr/local/bin/identify
phpize -> /usr/local/bin/phpize
swftophp -> /usr/local/bin/swftophp

Im Apache, im VHost stehen noch folgende Angaben zu PHP:
php_admin_value sendmail_path "/usr/sbin/sendmail -t -finfo@domain.de"
php_admin_value open_basedir /home/user/:/usr/local/share/pear/:/usr/local/bin/phpsafemode/
php_admin_value upload_tmp_dir /home/user/tmp/
php_admin_value session.save_path /home/user/tmp/

Leider funktioniert die Übersetzung nicht.

Ich denke der Fehler liegt daran, das PHP immer noch versucht gettext im Ordner /usr/local/bin/gettext zu starten und nicht über den Ordner /usr/local/bin/phpsafemode/gettext aber wie kann ich das Einstellen?

Was sind Euerer Meinung nach die besten Einstellungen für safe_mode=on?

Bitte keine Diskussion über safe_mode ein oder nicht ein, dieses habe ich in den letzten Tagen schon 1000 mal gelesen und ich finde es doch besser wenn es eingeschaltet sein würde.

Danke Daniel
 
Hallo,

es gibt keine Fehlermeldung, es wird der Text in englisch angezeit und das war alles. Ist der safe_mode=off, dann erhalte ich den deutschen Text.

Danke Daniel
 
Jetzt auch mit Fehlermeldung und mehr Infos zum Server

Hallo,

ich habe gestern abend noch ein par Einstellungen getestet und dabei ist mir aufgefallen das ein Login im SquirrelMail mit Safe_Mode nicht möglich ist.

Ich bekomme immer die Meldung:
Code:
Error opening ../data/default_pref
Could not create initial preference file!
/mnt/home/bladeda/data/ should be writable by user www
Please contact your system administrator and report this error.

Ich habe die Rechte überprüft und konnte keinen Fehler feststellen:
www01# ls -l /mnt/home/bladeda/ | grep data
drwxrwxrwx 3 www users 512 Apr 13 07:32 data

Des weiteren habe ich jetzt den Apache so eingerichtet das ich eine phpinfo und die configtest von SquirrelMail zeigen kann.

Hier die URLs
http://62.146.50.120/src/configtest.php
http://62.146.50.120/src/info.php

Danke für jede Hilfe, ich kann wirklich jeden Tip gebrauchen um dieses Problem zu lösen.


Danke Daniel
 
Abgesehen davon, dass die Zugriffsrechte ziemlich gewagt sind und mit secure rein gar nichts zu tun haben, ist die Fehlermeldung ziemlich rätselhaft. Versuch's mal mit 'chown www:www'.
 
Hallo,

ja, mit den rechten hast du vollkommen recht. Das hat bestimmt nichts mit Sicherheit zu tun, ich hatte es zuvor auch nicht so aber wollte ja auf jeden Fall davon ausgehen das der Apache schreiben kann, wie auch immer.

Ein chown www:www bringt nichts, dieses habe ich bereits getestet. Des weiteren habe ich den Apache in der group users laufen. Aber auch wenn dieser in der group www läuft und ich den chown durchführe funktioniert es nicht.

Wie macht php eigentlich den Login über einen IMAP Client oder hat PHP hier eine eigene Schnittstelle?

Was mich an der Sache nervt ist eigentlich nur das ich keine PHP Fehlermeldung bekomme auch wenn ich in der php.ini den höchsten Error-Level einstelle bekomme ich kein Warnung und keinen Fehler. Es steht nichts am Bildschirm und in ein Logfile wird auch nichts geschrieben.

Danke Daniel
 
Wenn SquirrelMail die Fehler abfängt ist da nichts zu machen. Die Fehlermeldung gibt offensichtlich einen falschen Lösungshinweis, also bleibt einem wohl nichts übrig als im Code zu suchen, von wo sie ausgelöst wird damit man den wahren Grund finden kann.
 
Jetzt funktioniert SquirrelMail im safe_mode

Hallo,

ich habe mich gerade nochmals über das Problem gemacht und jetzt geht es.

Folgende Einstellungen sind in der php.ini gesetzt zum safe_mode:
Code:
safe_mode = On
safe_mode_gid = On
safe_mode_include_dir =
safe_mode_exec_dir = /usr/local/bin/phpsafemode/
safe_mode_allowed_env_vars = LC_ALL,LANG,LANGUAGE,LC_NUMERIC,PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH

Im dir phpsafemode habe ich folgende Links hinterlegt:
Code:
ls -l /usr/local/bin/phpsafemode/
total 0
lrwxr-xr-x  1 root  wheel  21 Apr 13 07:38 aspell -> /usr/local/bin/aspell
lrwxr-xr-x  1 root  wheel   8 Apr 13 07:27 cat -> /bin/cat
lrwxr-xr-x  1 root  wheel  24 Apr  7 09:40 composite -> /usr/local/bin/composite
lrwxr-xr-x  1 root  wheel  22 Apr  7 09:41 convert -> /usr/local/bin/convert
lrwxr-xr-x  1 root  wheel  22 Apr 13 07:27 gettext -> /usr/local/bin/gettext
lrwxr-xr-x  1 root  wheel  20 Apr 13 07:37 iconv -> /usr/local/bin/iconv
lrwxr-xr-x  1 root  wheel  23 Apr  7 09:41 identify -> /usr/local/bin/identify
lrwxr-xr-x  1 root  wheel  15 Apr 13 16:11 locale -> /usr/bin/locale
lrwxr-xr-x  1 root  wheel  21 Apr  7 09:41 phpize -> /usr/local/bin/phpize
lrwxr-xr-x  1 root  wheel  23 Apr  7 09:41 swftophp -> /usr/local/bin/swftophp

Das Data Verzeichnis von SquirrelMail hat jetzt folgende berechtigung:
Code:
ls -l | grep data
drwxr-x---   2 root     users    512 Apr 13 16:55 data

Hier sollte ich aber dazu sagen das der Apache bei mir unter den User www und unter der Gruppe users läuft, eingestellt in der Datei httpd.conf.

Jetzt kommt noch die kleine Änderung am php-Code von SquirrelMail.
Code:
edit i18n.php
// Folgende zwei Zeilen entfernen (ca. bei Zeile 304)
//<        if ( !((bool)ini_get('safe_mode')) &&
//<            getenv( 'LC_ALL' ) != $longlocale ) {
// Dafür die Zeile wie folgt einfügen
//>
        if ( getenv( 'LC_ALL' ) != $longlocale  ) {

In der Datei ../config/config.php von SquirrelMail sind folgende Variablen wie folgt gesetzt:
Code:
$squirrelmail_default_language = 'de_DE';
$default_charset       = 'iso-8859-1';
$data_dir                 = '/mnt/home/bladeda/webmail/data/';

Jetzt sollte SquirrelMail inkl. Login und deutscher Übersetzung im safe_mode laufen.


Viel Spaß Daniel
 
Zurück
Oben