[英]PHP - error_log() will not print to file
標題幾乎說明了一切。 我一直在全力以赴地努力工作。 我正在創建基於PHP的登錄系統,並且需要進行一些調試。 對我而言,目前最有用的是在整個PHP程序中的某些點將調試消息寫入文件的功能。 根據文檔,這似乎應該是error_log()
要做的事情,但是盡管我嘗試了一切,但我還是沒有成功。 我在下面嘗試過的所有內容的完整列表:
將以下內容添加到/etc/php/7.0/apache2/php.ini
error_reporting = E_ALL display_errors = On log_errors = On
此外,嘗試將error_log
設置為/usr/
, /var/www/http/
和/home/
使用ini_set()
和error_reporting()
來設置所有這些變量,包括PHP文件中的error_log
手動創建應該寫入的文件,並將其擁有的用戶和組設置為www-data
並將其權限設置為777
最后但並非最不重要的一點是,重新安裝libapache2-mod-php7.0
和php7.0
,無濟於事
基本上,在跳到我預期死亡之前,除了使用筆記本電腦打破辦公大樓的第三個故事窗口外,所有其他事情
我真的找不到其他可以在Google上嘗試的東西,所以我想請教專家,就在這里。 如果有人可以提供任何建議,將不勝感激。
我猜這些日志已寫入sys日志,因為在error_log()中您未提供目標位置。
試試下面的代碼
error_log("An error occured", 3, "/var/tmp/my-errors.log");
確保此文件可以由php fpm或www-data讀取,具體取決於您的配置,您可以在觸摸之前創建它,並使用chmod手動添加權限
3表示目標是文件
如果您使用apache,請在httpd.conf或任何其他可能存在錯誤的地方(v所在的位置)簽入
ErrorLog "/var/log/apache2"
然后使用ls -la
ll
等檢查該文件是否具有以下用戶組。
-rwxrwxr-x 1 www-data www-data
這樣的東西應該出現。
另一個選項是在適當的php.ini中設置以下內容(CLI和apache具有不同的php.ini文件)
error_log = /var/log/phperrors.log
然后
touch /var/log/phperrors.log
chown www-data: /var/log/phperrors.log
chmod +rw /var/log/phperrors.log
沒有奇跡,但是如果仍然set_error_handler()
您可以使用set_error_handler()
編寫和注冊自己的錯誤處理程序,您可以在php手冊中找到有關如何執行此操作的示例。 它更像是hack,但可以肯定地工作。 如果不這樣做,則意味着根本不會觸發錯誤,那么應該在觸發錯誤之前查看是否編輯了正確的php.ini或使用ini_set()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.