Home   Profil   Fun
#51 Linux  04.04.2009

Error 500 bei PHP-Skripten


Wenn ein PHP-Skript den HTTP-Fehler 500 (internal server error) erzeugt, findet man dessen Ursache möglicherweise an einer völlig unerwarteten Stelle. Ich gehe hier davon aus, dass das Skript selbst funktioniert, keine Syntaxfehler aufweist sowie die korrekten Berechtigungen hat. Eine Möglichkeit für diesen Fehler ist ein falsch konfigurierter open_basedir-Parameter in der php.ini. Das kann zum Beispiel so aussehen, dass man open_basedir gesetzt hat, aber versucht ein Skript ausserhalb dieses Verzeichnisbaumes laufen zu lassen. Dies führt dann in der Folge zum Fehler 500.

In den Apache-Logdateien sieht das dann ungefähr so aus:
84.169.241.11 - xyz [12/Mar/2008:05:21:38 +0100] "GET /test.php HTTP/1.1" 500 - "-" \ 
"Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.12) Gecko/20080203 \
SUSE/2.0.0.12-0.1 Firefox/2.0.0.12 FirePHP/0.0.5.26"

Um dies zu prüfen öffnet man die php.ini des Apache-Webservers und stellt sicher, dass open_basedir einen korrekten Wert hat, sofern man es denn setzen möchte.
# vi /etc/php/apache2-php5/php.ini

; open_basedir, if set, limits all file operations to the defined directory
; and below.  This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
open_basedir = /var/www/www.domain.xyz/

# /etc/init.d/apache2 restart