簡體   English   中英

如果 error_log 指令只是說“error_log”,那么 PHP 錯誤記錄在哪里?

[英]Where are PHP errors logged to if the error_log directive simply says “error_log”?

我運行了phpinfo()並且error_log指令只是說error_log 那是指什么文件? error_log的完整路徑是什么?

從文檔中引用:

錯誤日志字符串

應記錄腳本錯誤的文件的名稱。 該文件應該可由 Web 服務器的用戶寫入。 如果使用特殊值 syslog,錯誤將發送到系統記錄器。 在 Unix 上,這意味着 syslog(3) 而在 Windows NT 上,它意味着事件日志。 Windows 95 不支持系統記錄器。另請參閱:syslog()。 如果未設置此指令,則會將錯誤發送到 SAPI 錯誤記錄器。 例如,它是 Apache 中的錯誤日志或 CLI 中的 stderr。

因此,當未設置該值(這是默認值)時,它將被發送到父錯誤記錄器,即 apache(如果通過它運行)或stderr如果您在命令行上運行腳本)。

如果您通過 apache 使用該腳本,則必須查看 apache 錯誤日志,通常位於/var/log/apache/var/log/httpd ,具體取決於您的發行版。 您可以檢查 apache 配置文件以獲取確切位置。

編輯:

我只是注意到我誤讀了您的問題,我猜您的意思是error_log具有實際值error_log

我只是做了一些測試。 當我將error_log設置為php_errors.log類的值時,PHP 仍會將錯誤消息寫入 apache 錯誤日志。 它的行為就像該值是空的一樣。 當我將該值設置為完整路徑(例如/tmp/php_errors.log )時,它會將錯誤寫入指定的文件。

所以我猜在你的情況下它會將錯誤寫入 apache 錯誤日志文件。

當然你可以設置自己的日志文件來添加

ini_set("error_log", "/tmp/php_errors.log");

到您需要它的 PHP 文件(如果它沒有被管理員禁用)。

當該值僅表示error_log (或php.ini文件中的error_log = error_log )時,這意味着錯誤將寫入發生錯誤的同一目錄中名為error_log的文件中。

因此,如果您在/home/user/public_html/中有一個名為index.php的文件引發錯誤,則錯誤將寫入: /home/user/public_html/error_log

如果/home/user/public_html/admin/images/中有名為resize.php引發錯誤,則錯誤將寫入: /home/user/public_html/admin/images/error_log


來源: PHP 的顯示和記錄錯誤

在 Windows 10 上,IIS 10.0.18362.1,
我在php\\php.ini設置:

error_log = "C:\tmp\php_errors.log"  

或者

error_log = C:\tmp\php_errors.log  

或者

error_log = \tmp\php_errors.log  

phpinfo() 顯示:

error_log C:\\tmp\\php_errors.log 或 \\tmp\\php_errors.log

有時直接,但總是在iisreset (回收應用程序池)之后。

那就是保存文件的地方。

沒有 pad : error_log = php_errors.log它將被寫入發生錯誤的地方。 已經提到了。

打開你的 php.ini 文件檢查 error_log 的路徑

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM