Aufruf von Systemtools aus Webapplikationen schlägt fehl

September 19, 2010

Es kann vorkommen, dass Webapplikationen ohne erkennbare Änderung plötzlich Probleme damit haben, irgendwelche Systemtools aufzurufen. Beispielsweise funktioniert der Aufruf von ImageMagick-convert aus mediawiki heraus gut, nach dem Reboot der Maschine aber nicht mehr. Weiteres Symptom: Nach dem manuellen restart von Apache via /usr/local/etc/rc.d/apache22 restart tut es auch wieder.

Die Erklärung ist einfach: Startet man als root (oder als User mit sudo) /usr/local/etc/rc.d/apache22, so wird das Environment der eingeloggten Shell an Apache vererbt, insbesondere auch PATH. Hier steht bei FreeBSD typischerweise auch /usr/local/bin mit drin, was im Environment direkt beim Boot (oder Start des Jails) fehlt.

Testen (für PHP): echo ‘<pre><php echo $_SERVER["PATH"]; ?></pre>’ > path.php

Ergibt beim Aufruf (direkt nach dem Boot): /sbin:/bin:/usr/sbin:/usr/bin
und nach dem manuellen restart von Apache: /sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin

Have fun
Raphael