色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

nginx php錯誤日志

劉姿婷1年前8瀏覽0評論

當運行Web應用程序時,可能會遇到各種錯誤。有些錯誤可能會導致Web服務器無法處理請求。為了迅速解決和調試這些問題,我們需要知道在nginx和php中如何記錄錯誤。

首先,讓我們看看nginx的默認日志文件。在nginx的配置文件中(通常是/etc/nginx/nginx.conf),可以找到以下行:

error_log /var/log/nginx/error.log;

這告訴nginx在/var/log/nginx/目錄下創建一個名為error.log的錯誤日志文件。如果nginx遇到錯誤,它會將它們記錄到該文件中。例如,如果nginx無法找到請求的文件或目錄,它會在錯誤日志中記錄以下內容:

2018/09/25 17:23:56 [error] 18229#18229: *1 open() "/usr/share/nginx/html/foo" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /foo HTTP/1.1", host: "localhost"

這樣做非常有用,因為它告訴我們發生了什么事情,哪個客戶端發起了請求,請求是什么,哪個服務器在響應該請求。我們可以使用這些信息診斷問題。

但是,nginx日志可能并不總是能夠告訴我們發生了什么。例如,如果請求傳遞到PHP腳本,它返回了500錯誤,那么nginx只能告訴我們發生了一個錯誤,而不告訴我們是什么錯誤。這是因為PHP本身記錄了錯誤,但nginx并不知道。

這就是我們需要了解PHP錯誤日志的地方。在PHP中,錯誤日志文件的位置由php.ini文件中的error_log選項定義。例如:

error_log = /var/log/php/error.log

這告訴PHP在/var/log/php/目錄下創建一個名為error.log的錯誤日志文件。如果PHP嘗試訪問不存在的函數或變量,或者出現語法錯誤,它將在該文件中記錄錯誤消息。例如:

[25-Sep-2018 17:24:02 UTC] PHP Notice:  Undefined variable: foo in /var/www/html/index.php on line 5

這告訴我們出了一個PHP公告,它說在/var/www/html/index.php文件的第五行訪問了未定義的變量“foo”。

那么,我們如何讓nginx和PHP之間通信,使nginx可以知道PHP中發生的錯誤呢?一個好的解決方案是安裝PHP的FastCGI進程管理器(FPM),并使用一些配置選項來告訴它將PHP錯誤發送到nginx日志文件。以下是一個示例配置(php-fpm.conf):

error_log = /var/log/php-fpm/error.log
log_level = warning
catch_workers_output = yes
[www]
access.log = /var/log/nginx/access.log
access.format = "%t \"%m %r%Q%q\" %s %b \"%{Referer}i\" \"%{User-Agent}i\""
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
catch_workers_output = yes
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on

在這個配置中,我們告訴FPM將其錯誤日志發送到/var/log/php-fpm/error.log文件中。然后,我們定義了一個名為“www”的PHP池。該池使用動態進程管理,最初有2個服務器,最多可并行處理10個請求。FPM還記錄了任何由PHP引發的錯誤并將其發送到/var/log/php-fpm/www-error.log日志文件中。在最后三行中,我們指示PHP不在瀏覽器中顯示錯誤,但將其記錄在FPM日志文件中,并且標志PHP記錄錯誤。

總之,當在Web應用程序中遇到錯誤時,查看與nginx,PHP和FPM相關的錯誤日志文件非常有幫助。這些日志文件可以用于調試和解決問題,以便我們可以快速恢復正常運行。