2008-08-01 27 views
96

在一臺運行Apache和PHP 5的Linux服務器上,我們有多個具有單獨日誌文件的虛擬主機。我們似乎無法區分虛擬主機之間的php error_logerror_log?

httpd.conf<Location>中重寫此設置似乎沒有任何作用。

有沒有辦法讓每個虛擬主機都有單獨的php error_logs

回答

73

要設置阿帕奇不是PHP)登錄,要做到這一點最簡單的方法是做:

<VirtualHost IP:Port> 
    # Stuff, 
    # More Stuff, 
    ErrorLog /path/where/you/want/the/error.log 
</VirtualHost> 

如果沒有領先的IT假定「/」是相對的。

Apache Error Log Page

+6

這是Apache的錯誤日誌,這是獨立於PHP錯誤日誌(請參閱其他評論) – thelem 2010-11-18 07:48:02

+2

PHP的錯誤日誌默認爲Apache的錯誤日誌。 – helloandre 2012-01-03 19:00:33

+0

相對於什麼?它寫入的`httpd.conf`的目錄,或者? – mb21 2013-09-03 16:11:12

8

的默認行爲是error_log中()輸出到Apache的錯誤日誌。如果沒有發生這種情況,請檢查您的php.ini設置是否包含error_log指令 - 不要使用當前虛擬主機的Apache日誌文件。

+0

我會檢查。我只是想知道,如果我們希望開發人員有機會調試他們的代碼而不給他們提供可能包含其他敏感數據的apache錯誤日誌,那麼是否仍然可以將apache和php錯誤日誌分開。 – 2008-08-01 22:31:54

12

我通常只是在我正在處理的域上的.htaccess文件vhost.conf中指定此項。將其添加到以下文件之一:

php_admin_value error_log "/var/www/vhosts/example.com/error_log" 
+1

任何人都可以評論`php_admin_value`和`php_value`之間的區別嗎? – 2014-07-04 01:31:08

5

我的Apache在httpd.conf中有類似的東西。只需更改ErrorLog和CustomLog設置

<VirtualHost myvhost:80> 
    ServerAdmin [email protected] 
    DocumentRoot /opt/web 
    ServerName myvhost 
    ErrorLog logs/myvhost-error_log 
    CustomLog logs/myvhost-access_log common 
</VirtualHost> 
5

您是否嘗試將php_value error_log '/path/to/php_error_log添加到您的VirtualHost配置?

3

你可以嘗試:

<VirtualHost myvhost:80> 
     php_value error_log "/var/log/httpd/vhost_php_error_log" 
    </Virtual Host> 

,但我不知道,如果是去工作。我嘗試在我的網站上沒有成功。

5

是的,你可以試試,

php_value error_log "/var/log/php_log" 
.htaccess

,或者你可以有用戶在其劇本的開頭使用ini_set()如果他們希望有記錄。

另一個選擇是啓用腳本以便在腳本文件夾中默認爲php.ini,然後轉到用戶/主機的根文件夾,然後轉到服務器的根目錄或類似的地方。這將允許主機添加他們自己的php.ini值和他們自己的error_log位置。

5
php_value error_log "/var/log/httpd/vhost_php_error_log" 

它適用於我,但我必須更改日誌文件的權限。

或Apache會將日誌寫入其error_log

6

請勿將error_log設置爲您的syslog材料所在的位置eg /var/log/apache2,因爲它們的錯誤將被ErrorLog攔截。相反,請在您的項目文件夾中創建subdir日誌,並在php_valueerror_log "/path/to/project/logs"中創建subdir。這適用於.htaccess文件和虛擬主機。另外,還要確保你把php_flaglog_errors

131

如果有人來尋找它應該是這樣的:

<VirtualHost *:80> 
    ServerName example.com 
    DocumentRoot /var/www/domains/example.com/html 
    ErrorLog /var/www/domains/example.com/apache.error.log 
    CustomLog /var/www/domains/example.com/apache.access.log common 
    php_flag log_errors on 
    php_flag display_errors on 
    php_value error_reporting 2147483647 
    php_value error_log /var/www/domains/example.com/php.error.log 
</VirtualHost> 

這是發展只有自display_error被打開。您會注意到Apache錯誤日誌與PHP錯誤日誌是分開的。好東西在php.error.log

看看這裏的error_reporting關鍵http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting