Ein Script von uns funktionierte auf dem Server des Kunden nicht ganz korrekt. Es sollte E-Mails versenden, tat es aber nicht. Ein kurzer Blick in die Kristallkugel ergab, das womöglich der safe_mode daran schuld ist. Die Kristallkugel sollte recht behalten.
Seit einer Weile schreiben einige Webspace-Provider vor, dass man bei Scripten die Return-path-Kopfzeile angibt. Das macht man mit Hilfe des fünften Parameters der Funktion mail(). Ist auch nicht weiter wild. Unsere Scripte können damit umgehen.
mail(
'empfaenger@example.com',
'Betreff',
'Nachricht',
'From: absender@example.com',
'-fwebmaster@example.com'
);
Ist aber der safe_mode aktiviert, ist der fünfte Parameter nicht erlaubt. Ergo werden auch keine E-Mails versendet. Das ist kein Problem, denn das Script verzichtet im safe_mode automatisch auf den fünften Parameter.
Leider hatte der Kunde noch eine Version des Scripts, in der diese Funktion fehlte. Man hätte jetzt ein Update machen können, aber der Kunde entschied kurzerhand, den safe_mode abzuschalten. Um so besser. Leider haben nur die wenigsten Anwender diese Möglichkeit.
Jetzt fing aber die Sache erst an, spannend zu werden. Den Pfad der php.ini hat der Kunde noch relativ zügig herausgefunden. Trotz Änderung und Neustart des Apache blieb jedoch der safe_mode eingeschaltet. Wenig hilfreich war auch die Tatsache, dass es mehrere php.ini an verschiedenen Orten auf dem Server gab.
Schlussendlich ließ sich die Einstellung in der Konfiguration der virtuellen Hosts finden:
/srv/www/vhosts/beispiel-domain/conf/httpd.include
Da wollte anscheinend jemand mit aller Macht sicherstellen, dass auf dem Server der safe_mode aktiviert bleibt. :-P