2011-02-12 30 views
2
ini_set('error_log', $custom_error_log_location); 
print ini_get('error_log'); 

上面的代碼的結果是什麼?沒有!它從字面上不打印任何值作爲ini_get('error_log')。我在Apache服務器上運行它。我調查了我的網站的Apache配置。 Apache配置通過ErrorLog指令具有自己的錯誤日誌設置。事情是這樣的:我在同一臺服務器上運行另一個網站,使用類似的Apache配置,並且在該網站上,我可以使用PHP指定一個自定義錯誤日誌。我無法在PHP中指定自定義錯誤日誌

我也檢查了該網站的php.ini文件。沒有記錄在那裏。我想知道的是,Apache或php.ini中是否有一些配置會阻止我修改錯誤日誌文件所在的位置?

+0

明顯的問題是'$ custom_error_log_location`設置是否正確? – 2011-02-12 20:15:23

+0

是的。任何機會,這是一個很長的一段時間,如果驗證失敗,PHP是否驗證路徑並將其替換爲空值? – William 2011-02-12 21:20:09

回答

3

如果safe_modeopen_basedir已生效,ini_set("error_log")是那些設置的限制(因爲你可以在打開的文件與error_log()寫任何東西)。

該限制涵蓋了運行時和.htaccess,但您可以使用php_value指令將其設置在虛擬主機配置文件中。

1

error_log設置屬於PHP_INI_ALL它可以在任何地方設置。所以你的代碼應該沒有問題。

通過「打印毫無作爲的ini_get('error_log')值」,它可能是你的$custom_error_log_location爲空或空,我建議在$custom_error_log_locationini_get('error_log')用於調試的var_dump(),而不是打印。

+0

不,我甩掉了變量的值。我知道我沒有傳入一個空字符串。 – William 2011-02-12 20:31:53

0

原來我有safe_mode,就這些了。