技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類(lèi)目錄

贊助商

最新文章

搜索

Nginx PHP 錯(cuò)誤日志輸出到log文件的設(shè)置方法

作者:admin    時(shí)間:2020-4-30 5:59:7    瀏覽:

今天一PHP程序運(yùn)行出現(xiàn)問(wèn)題,想看看錯(cuò)誤信息,但是Nginx環(huán)境如何查看PHP錯(cuò)誤信息?常規(guī)做法是看log日志文件,但是首先要做的是能讓PHP把錯(cuò)誤信息輸出到log文件里。原以為很簡(jiǎn)單,直接在php.ini里設(shè)置下log日志文件路徑即可,但測(cè)試后發(fā)現(xiàn)這樣做是不行的。那問(wèn)題在哪?

 Nginx PHP 錯(cuò)誤日志輸出到log文件的設(shè)置方法

Nginx PHP 錯(cuò)誤日志輸出到log文件的設(shè)置方法

通過(guò)查閱了一些相關(guān)的文章資料,原來(lái)主要根源在于php-fpm的配置文件php-fpm.conf。

php-fpm的配置文件php-fpm.conf中默認(rèn)是關(guān)閉worker進(jìn)程的錯(cuò)誤輸出,直接把他們重定向到/dev/null,所以我們看不到php的錯(cuò)誤日志。

要解決這一問(wèn)題,只需設(shè)置下php-fpm.conf即可。我使用的關(guān)鍵代碼如下:

[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice

[www]
; 下面這句不能少,記錄PHP執(zhí)行錯(cuò)誤日志
catch_workers_output = yes

解釋?zhuān)?/strong>

1、error_log 是定義日志文件路徑

2、log_level = notice 不能少

3、catch_workers_output = yes 不能少

通過(guò)這樣設(shè)置后,php的錯(cuò)誤信息就會(huì)直接寫(xiě)入error_log定義的日志文件里了。

重啟php服務(wù),方法:

service php-fpm restart

試試有無(wú)效果?

上述方法無(wú)效?再按下面方法設(shè)置php.ini

網(wǎng)上不少文章說(shuō)到還要設(shè)置php.inierror_log路徑,但我測(cè)試發(fā)現(xiàn),php.inierror_log路徑設(shè)置是沒(méi)有意義的,這就解釋了為什么一開(kāi)始我只設(shè)置php.ini日志輸出路徑卻沒(méi)有效果的原因。也許是別人的php-fpm.conf設(shè)置與我不同,造成還需要設(shè)置php.inierror_log路徑。網(wǎng)友們?nèi)绻l(fā)現(xiàn)我前面提到的設(shè)置方法不可行,那么可以再設(shè)置一下php.ini,關(guān)鍵代碼是如下三行:

log_errors = On
error_log = "/usr/local/php/var/log/php_errors.log"
error_reporting = E_ALL & ~E_NOTICE

更新(2021年12月13日):

設(shè)置完php.ini后,需要重啟Nginx服務(wù)。另外,把php_errors.log權(quán)限設(shè)置為777。測(cè)試有效!

開(kāi)頭設(shè)置php-fpm.conf,輸出的error_log日志是記錄php運(yùn)行日志,而不是網(wǎng)站程序產(chǎn)生的php錯(cuò)誤日志。

解釋?zhuān)?/strong>

1、log_errors = On 不能少

2、error_log 設(shè)置日志文件路徑

3、error_reporting 的值設(shè)為 E_ALL & ~E_NOTICE

標(biāo)簽: nginx  linux技術(shù)  服務(wù)器  
x
  • 站長(zhǎng)推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */