2017-02-14 5 views
3

Ich benutze PHP-FPM mit NGINX und ich kann Fehlerprotokoll nicht richtig mit PHP-FPM funktionieren.PHP Skriptfehler trotz php.ini Einstellungen nicht protokollieren

Dies ist mein php.ini, der relevante Teil:

error_reporting = 'E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE' 
error_log = /var/www/logs/php-scripts.error.log 
log_errors = 'On' 
display_errors = 'Off' 
display_startup_errors = 'Off' 
html_errors = 'Off' 

open_basedir = /var/www/html/:/var/www/.tmp/:/var/www/logs/ 
upload_tmp_dir = /var/www/.tmp 

Relevante Fragmente www-pool.comf (config von PHP-FPM Master-Prozess geladen):

listen = 9000 
user = www-data 
group = www-data 
request_slowlog_timeout = 10 
slowlog = /var/log/php-fpm/$pool.slow.log 
chdir = /var/www/html 
access.log = /var/log/php-fpm/$pool.access.log 
catch_workers_output = Yes 

/var/www/logs/ beschreibbar ist durch www-data - der Benutzer PHP-FPM und der Webserver läuft als.

Nun, wenn ich das in index.php:

error_log('Some error');

Die Fehlermeldung findet auf /var/www/logs/php-scripts.error.log ohne Probleme den Weg gebracht. Allerdings, wenn ich versuche, den Fehler auszulösen wie so:

trigger_error('Some error', E_USER_WARNING);

Der Fehler wird nicht in der Protokolldatei aufgezeichnet. Auch, wenn ich absichtlich gebrochen PHP-Skript zu starten, bekomme ich einen 500 Internal Server Error auf dem Bildschirm, aber nichts ist mit dem PHP-Fehlerprotokoll auch immer protokolliert, zB:

// index.php 
<?php 
echo 'Trigger error' 

Beachten Sie die ; oben fehlt - das berichten sollte ein Fehler im Fehlerprotokoll, ich bekomme nur 500 Interner Serverfehler und keine Ausgabe im Protokoll.

Können Sie helfen? Vielen Dank.

Antwort

1

Entfernen Sie die Zitate aus error_reporting, und die anderen Einstellungen auch, sollten Sie Ihre php.ini wie folgt aussehen:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE 
error_log = /var/www/logs/php-scripts.error.log 
log_errors = On 
display_errors = Off 
display_startup_errors = Off 
html_errors = Off 

open_basedir = /var/www/html/:/var/www/.tmp/:/var/www/logs/ 
upload_tmp_dir = /var/www/.tmp 
+0

das war es. Als Referenz sind jedoch doppelte Anführungszeichen erlaubt, aus docs: "; Sie können Strings in doppelte Anführungszeichen einschließen include_path =".:/Usr/local/lib/php "" Danke – luqo33

+0

Ja, obwohl das normalerweise nur für die Datei gemacht wird Pfade oder andere Textstrings. Per Konvention werden die error_reporting-Werte und On/Off normalerweise ohne Anführungszeichen gelassen :) – ablopez

Verwandte Themen