codehunter
Goto Top

Error-reporting bei PHP als Apache-Modul

Hallo!

Ich habe zwar schon seit Jahren mit PHP zu tun, habe aber diesmal eine Anfängerfrage. Alle WAMP-Server die ich bisher aufgesetzt habe, hatten PHP als CGI laufen. Wenn es da irgendwelche Fehler im PHP-Script gab und der PHP-Interpreter ausgestiegen ist, dann hat der Apache die Fehlermeldungen des Interpreters an den Browser ausgegeben.

Jetzt habe ich zum ersten Mal einen Apache mit PHP als Modul aufgesetzt und dort verhält sich das Ganze anders. Wenn der PHP-Interpreter dort an einem Scriptfehler aussteigt, bekommt der Browser vom Apachen nur noch einen 404er Fehler.

Kann man die Ausgabe von Scriptfehlern bei PHP als Modul per php.ini aktivieren oder mache ich da jetzt einen grundlegenden Denkfehler?

EDIT: Apache und PHP sind soweit konfiguriert dass fehlerfreie PHP-Scripte problemlos ausgeführt werden. Nur wenn im PHP Fehler sind, steigt anscheinend der ganze Apache-Thread aus, wirft den PHP-Fehler in das error.log und schickt dem Browser den 404er. Und genau die Fehlermeldungen die vom PHP kommen und im error.log landen, habe ich bisher beim PHP-CGI direkt in den Browser bekommen.

Grüße
Cody

PS: Ich hab schon einen triftigen Grund, PHP diesmal als Modul laufen zu lassen: Apache, MariaDB und PHP sollen als x64 laufen. Mit x64-FastCGI gabs nur Scherereien. Darum die Modul-Lösung. Tuts soweit auch, nur das PHP-Debugging ist so ein bisschen schwierig...

Content-Key: 202910

Url: https://administrator.de/contentid/202910

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: godlie
godlie 06.03.2013 um 21:55:30 Uhr
Goto Top
Hallo,

ein 404er Fehler deutet nicht auf ein PHP problem hin, da 404 -> Seite nicht gefunden heist.

Für die Anzeige der Fehler sind folgende Direktiven in der php.ini zuständig:

error_reporting, display_errors

grüße
Mitglied: Codehunter
Codehunter 07.03.2013 aktualisiert um 09:17:18 Uhr
Goto Top
Hallo godlie,

das weiß ich. error_reporting ist auf E_ALL und display_errors ist On.

Doch Tatsache ist: Ich habe z.B. eine funktionierende index.php. Rufe ich die auf, bekomme ich die Ausgabe im Browser. Wenn ich in der index.php einen Fehler baue, der eine Meldung wie z.B. "Fatal error: Call to undefined function xyz" produziert, dann meldet der Apache einen 404 bei der tatsächlich existierenden index.php und die Fehlermeldung landet im error.log des Apachen.

Grüße
Cody.

EDIT: Ich habe den Fehler gefunden. Bis PHP 5.2.4 war display_errors ein Boolscher Wert. Bei neueren Versionen ist es ein String und der stand bei mir auf "stderr". Ich hatte an einer Stelle in der php.ini "display_errors On" stehen, doch weitr unten kam dann noch ein "display_errors stderr". Wenn ich das auf "stdout" ändere dann geht es. Schon seltsam, dass man im Netz kaum was darüber findet und selbst in der PHP-Doku nur eine Fußnote zu finden ist.