在 Nginx 的設定檔中加入一些設定項,可以輸出 PHP 的錯誤日誌檔案。一般情況下, CentOS 系統上的 Nginx 設定檔會保存在 /etc/nginx/nginx.conf。通常位於檔案頂部,你可以在檔案中找到http 模組的設定段,並新增以下設定項:
http { ... server { ... location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; # error log fastcgi_param PHP_VALUE "error_log=/var/log/nginx/php_errors.log"; } ... } ... }
只有當存取URL 以.php 結尾時,才會套用該設定項,即使用location ~ .php$。在 fastcgi_pass 中設定了 PHP FastCGI 伺服器的位址和連接埠。 fastcgi_param 用於設定 PHP 的參數,其中 SCRIPT_FILENAME 指定 PHP 腳本的路徑和檔案名稱。使用預設的 FastCGI 參數,需要在 Nginx 中包含 fastcgi_params。最後一行新增了 fastcgi_param PHP_VALUE "error_log=/var/log/nginx/php_errors.log";,表示將 PHP 的錯誤訊息記錄到 /var/log/nginx/php_errors.log 檔案中。
建立一個日誌檔案用於記錄 PHP 的錯誤訊息,這是在配置 Nginx 後所需的步驟。假設我們要將日誌檔案儲存到/var/log/nginx/php_errors.log,可以使用下列指令建立檔案:
sudo touch /var/log/nginx/php_errors.log
然後使用下列指令修改檔案的屬主和權限:
sudo chown nginx:nginx /var/log/nginx/php_errors.log sudo chmod 644 /var/log/nginx/php_errors.log
測試時,可以建立一個PHP 腳本並出現錯誤,例如:
<?php echo 1/0; ?>
將這個腳本儲存為test.php,然後將其放置在Nginx 的Web 根目錄下,例如/usr/share/nginx/html/test.php。當你造訪 http://localhost/test.php 時,你會發現出現了一個 PHP 錯誤。然後使用以下命令查看日誌檔案內容:
sudo tail /var/log/nginx/php_errors.log
如果一切正常,應該可以看到類似如下的錯誤訊息:
[17-Oct-2021 20:52:42 UTC] PHP Warning: Division by zero in /usr/share/nginx/html/test.php on line 2
以上是nginx中如何輸出php錯誤日誌文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!