2017-02-14 69 views
3

我正在使用NGINX的PHP-FPM,並且我無法獲得錯誤日誌以正確使用PHP-FPM。儘管php.ini設置PHP不記錄腳本錯誤

這是我php.ini,相關部分:(由PHP-FPM主進程加載配置)的www-pool.comf

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 

相關片段:

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/是可寫的www-data - 用戶PHP-FPM和Web服務器正在運行。

現在,如果我這樣做在index.php

error_log('Some error');

錯誤信息找到其方式/var/www/logs/php-scripts.error.log沒有問題。然而,當我嘗試觸發錯誤,像這樣:不被記錄在日誌文件中

trigger_error('Some error', E_USER_WARNING);

錯誤。此外,當我啓動故意打破PHP腳本,我得到的屏幕上的500內部服務器錯誤,但沒有被記錄到PHP錯誤日誌無論如何,如:

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

通知上述失蹤; - 應報告錯誤日誌中的錯誤,我只得到500內部服務器錯誤,並在日誌中沒有輸出。

你能協助嗎?謝謝。

回答

1

從使用error_reporting刪除引號,和其他設置爲好,你的php.ini應該是這樣的:

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

這是它。但是,爲了便於參考,可以使用雙引號:「;您可以將字符串用雙引號括起來include_path =」。:/ usr/local/lib/php「」謝謝 – luqo33

+0

是的,雖然通常只對文件路徑或其他文本字符串。按照慣例,error_reporting值和On/Off通常會保留而不引用:) – ablopez