FastCGI non vuole registrare correttamente gli errori PHP. Bene, non è del tutto vero: registra errori, con un po 'di giochini; semplicemente non registrerà qualcos'altro, come gli avvertimenti.Nginx + FastCGI + PHP (php-fpm) errori di registrazione non rilevati/avvisi
Il famigerato FastCGI -> Nginx log bug non è un problema, necessariamente. Gli errori e gli avvisi di php-fpm vanno direttamente a Nginx, ma solo se non vengono presi in considerazione. Cioè, se set_error_handler
intercetta un errore, nessuna voce di registro viene aggiunta. Ciò significa che posso vedere errori di analisi, ma questo è tutto.
php-fpm non registra gli errori PHP da solo (separati da nginx) senza un po 'di trucco. file di configurazione dell'istanza di php-fpm include queste due righe per impostazione predefinita:
php_admin_value[error_log] = /mnt/log/php-fpm/default.log
php_admin_flag[log_errors] = on
Ho cambiato il percorso error_log, ovviamente. Ho dovuto aggiungere la seguente riga per farlo per accedere in realtà nulla:
php_admin_value[error_reporting] = E_ALL & ~E_DEPRECATED & ~E_STRICT
nota Versione: la parte E_STRICT non è necessaria, come sto utilizzando PHP 5.3.27, ma ho intenzione di aggiornamento a 5.4 ad un certo punto. Con questa linea, registra errori - e solo errori - a /mnt/log/php-fpm/default.log
. Ora, questo imposta error_reporting
sullo stesso valore che ho impostato in php.ini, quindi qualcosa è ovviamente sbagliato qui. Inoltre, non registra errori rilevati: il comportamento è identico a quello del registro nginx. Ho provato a usare il valore numerico (22527), ma ancora senza fortuna.
Non mi interessa in quale file di registro finiscono le voci (nginx rispetto a php-fpm), ma ho bisogno di errori rilevati per essere registrati da qualche parte. Potrei ricorrere all'iniezione del mio errore e dei gestori delle eccezioni, ma è un po 'hacker, quindi preferirei evitarlo.
Sono pazzo nel ricordare che Apache non ha avuto questo problema? – Zenexer