[linux-l] Serverkonfiguration PHP Safe Mode

Volker Grabsch vog at notjusthosting.com
Mi Sep 19 23:38:25 CEST 2007


On Mon, Sep 17, 2007 at 01:34:30PM +0200, Manuel Tennert wrote:
> Ich bin dabei eine Typo3-Installation zu vervollständigen und mit
> einigen Extensions zu versehen, da taucht bei der Installation von
> AWStats folgende Fehlermeldung auf:
> 
> safe_mode' is enabled in PHP what makes it impossible for this script to
> run AWstats. 
> You may install the pure AWstats script by yourself. 
> Get it from http://awstats.sourceforge.net

Typo3 startet AWstats über die Kommandozeile. Das heißt, das PHP wird
dort auf einem anderen Wege aufgerufen als z.B. über den Webserver, wie
es bei Typo3 geschieht.

So könnte es sein, dass du eine andere php.ini, nämlich eine für PHP
"cli", benutzen musst.

> So weit so gut...erstelle ich mir nun eine PHP-Info Datei erhalte ich
> folgendes:
> 
> Configuration
> PHP Core
> 
> safe_mode	Off	Off
> safe_mode_exec_dir	/srv/www/htdocs/empty/	no value
> safe_mode_gid	Off	Off
> safe_mode_include_dir	no value	no value
> 
> Safe Mode ist doch Off, oder sehe ich das nun falsch?

Ja, für "PHP über Apache", aber wahrscheinlich nicht für "PHP über
Kommandozeile". (letzteres wird auch "php-cli" genannt)

Ist natürlich nur eine Vermutung. Hättest du uns den Pfad zu deiner
php.ini verraten, könnte man mehr dazu sagen.

> Auf dem Server läuft Confixx und Suse Linux.

Das folgende hat mit deinem Problem nichts zu tun, dennoch kann ich
mir einen Kommentar - aus eigener Erfahrung - nicht verkneifen:

Lerne, wie man den Apache konfiguriert, dann hau Confixx in die Tonne.

Dann konfiguriere dein System möglichst einfach, sodass du selbst
durchsiehst. Mit ca. 5 Konfigurations-Optionen pro Domain kommst
du gut hin, wenn's keine extravaganten Ansprüche sind (... bei denen
du mit Confixx aber erst recht aufgeschmissen bist ... die "custom
httpd entries" sind mehr ein Workaround als alles andere).

Der safe_mode von PHP ist ein Witz, das ist eine Notlösung für Leute,
bei denen sämtliche PHP-Scripte mit Webserver-Privilegien (wwwrun) laufen.
Ab PHP-5 soll er AFAIK sogar abgeschafft werden.

Lieber gleich die PHP-Scripte unter entsprechenden User-Accounts laufen
lassen, am besten via mod_suexec. SuExec läuft nur mit CGI und FastCGI,
nicht mit mod_php. Da die meisten Systeme (unverantwortlicherweise!)
aber mod_php nutzen, kommt dort SuExec für PHP-Scripte gar nicht in
Frage. *sigh*

Also hau mod_php in die Tonne, und arbeite mit CGI. PHP über CGI
ist immer noch schnell genug, der PHP-Interpreter lädt nämlich
recht flink (im Vergleich zu z.B. Ruby). Ist es dir dennoch zu lahm,
nimm FastCGI, konkret: mod_fcgid (*nicht* mod_fastcgi, das ist buggy
und zudem unfrei). Doch FastCGI brauchst du wohl nicht, jedenfalls
nicht für Typo3 & AWstats auf moderner Hardware.

Kurz: Nimm CGI+SuExec anstelle von mod_php+safe_mode.

Netter Nebeneffekt: Du hast auch einige nervende Dateirechte-Probleme
nicht mehr, die letztendlich eh nur dazu führen, dass Leute ihre
Verzeichnisse mit den Rechten 777 (rwxrwxrwx) versehen, was dann das
ganze tolle Sicherheitskonzept ad absurdum führt.


Gruß,

    Volker

-- 
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR



Mehr Informationen über die Mailingliste linux-l