2012-10-11 122 views
17

我在哪裏可以找到錯誤日誌文件?我需要檢查它們以解決安裝suPHP後顯示的內部服務器錯誤。我在哪裏可以找到錯誤日誌文件?

+1

這取決於你的日誌設置:) CO – Nemoden

+1

我的服務器是centos,但它不顯示var/log/httpd下的任何東西 – user1010966

+0

檢查['error_log'](http://www.php.net/manual/en /errorfunc.configuration.php#ini.error-log)路徑在php.ini中設置。如果沒有設置,它通常會記錄在Web服務器的錯誤日誌中。 – air4x

回答

2

你正在使用什麼操作系統和哪個Webserver?在Linux和Apache上,您可以在/ var/log/apache2/

中找到apache error_log
+2

在/ var下提問 –

+0

/log沒有任何文件夾或文件名爲apache2或apache。我的服務器是centos - apache – user1010966

+0

在/ var/log/httpd下?您可以在apache.conf文件中配置apache的日誌位置。這應該位於/ etc/httpd/ – hiasl86

9

適用於我。如何將所有的php錯誤記錄到日誌文件?

只需添加以下行爲/etc/php.ini到錯誤記錄到指定的文件 - /var/log/php-scripts.log

vi /etc/php.ini 

修改的error_log指令

error_log = /var/log/php-scripts.log 

製作確保display_errors設置爲Off(對最終用戶沒有錯誤)

display_errors = Off 

保存並關閉文件。重新啓動Web服務器:

/etc/init.d/httpd restart 

如何將錯誤記錄到系統日誌或Windows Server事件日誌?

修改的是error_log如下:

error_log = syslog 

怎麼看日誌?

Login using ssh or download a log file /var/log/php-scripts.log using sftp: 
$ sudo tail -f /var/log/php-scripts.log 
+0

某處我爲什麼要確保display_errors關閉?當然,這不應該影響錯誤記錄,是嗎? – User

+0

正如答案中所述,'display_errors'確定是否向最終用戶*顯示錯誤(例如,在渲染的網頁上),所以不會影響日誌記錄。 http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors – cincodenada

1

我使用美分OS 6.6阿帕奇,對我錯誤日誌文件是在

在/ usr /本地/ Apache /日誌

15

您可以使用 「lsof的」 到在你的系統上找到打開的日誌文件。 lsof只是給你一個所有打開文件的列表。

使用grep作爲「log」...再次使用grep作爲「php」(如果文件名包含字符串「log」和「php」就像在「php_error_log」中一樣,並且你是root用戶,你會發現這些文件不知道配置)。

 [email protected]:~# lsof |grep log 
     ... snip 
     gmain  12148 12274  user 13r  REG    252,1 32768  661814 /home/user/.local/share/gvfs-metadata/home-11ab0393.log 
     gmain  12148 12274  user 21r  REG    252,1 32768  662622 /home/user/.local/share/gvfs-metadata/root-56222fe2.log 
     gvfs-udis 12246    user mem  REG    252,1 55384  790567 /lib/x86_64-linux-gnu/libsystemd-login.so.0.7.1 
==> apache 12333    user mem  REG    252,1 55384  790367 /var/log/http/php_error_log** 
     ... snip 

 [email protected]:~# lsof |grep log |grep php 
     **apache 12333    user mem  REG    252,1 55384  790367 /var/log/http/php_error_log** 
     ... snip 

也看到這篇文章在尋找開放的日誌文件: Find open logfiles on a linux system

+0

這是查找日誌文件的好方法 – Alp

4

在用的cPanel的CentOS安裝我的日誌是在:

/usr/local/apache/logs/error_log

看點:tail -f /usr/local/apache/logs/error_log

0

這是在大多數使用情況較佳的答案,因爲它可以讓你從分離的服務器平臺的直接的知識,這使你的代碼更便攜的軟件的執行。如果你正在做很多cron/cgi,這可能不會直接幫助,但它可以在web運行時設置爲一個配置,cron/cgi腳本從該配置中取出以保持日誌位置一致。


您可以通過使用獲得本地分配到PHP在運行在任何平臺上當前的日誌文件:

ini_get('error_log'); 

這將返回由Web服務器,這是直接分配到PHP的二進制值你需要90%的用例(顯而易見的例外是cgi)。 Cgi經常會登錄到http webserver客戶端的相同位置,但並不總是如此。

在提交任何內容以避免錯誤之前,您還需要檢查它是否可寫。定義其位置的conf文件(通常是全局的apache.conf或每個域的vhosts.conf),但conf不能確保文件權限允許在運行時寫入權限。

相關問題