2012-04-24 78 views
1

我有php腳本,因爲去年Ocober工作正常,最後我記得是2個月前和今天執行它們時,我有_SERVER ['DOCUMENT_ROOT']變量的問題。DOCUMENT_ROOT設置,但無法在腳本中獲取。爲什麼?

如果我查看_SERVER數組,它不會被設置。而如果我在腳本中執行:

phpinfo(); 

然後變量就在那裏並設置。但是調用它:

$_SERVER['DOCUMENT_ROOT'] 

,返回null

,這是什麼原因呢?我如何在腳本中再次使用它?我認爲原因是php或apache更新,但兩者在過去的2個月內都進行了幾次更新。

另外,我沒有在php.ini文件中看到DOCUMENT_ROOT。我看到doc_root,這是不同的。

我的PHP: PHP版本5.3.5-1ubuntu7.7 阿帕奇: PHP版本5.3.5-1ubuntu7.7

+0

'的var_dump($ _ SERVER);' – zerkms 2012-04-24 09:02:16

+0

當我寫的,包含在DOCUMENT_ROOT – quinestor 2012-04-24 12:37:57

回答

1

DOCUMENT_ROOT是由(阿帕奇)Web服務器通過調用CGI腳本,你通常之前設置一個環境變量。如果您的網絡服務器存在錯誤或配置錯誤,則可能會發生此環境變量不再設置。

您可以嘗試使用mod-rewrite,mod-cgi,mod-setenv或類似軟件進行調試和/或熱修復。如果這完全在你的頭上,請聯繫你的服務器管理員並討論這個問題,因爲它有很多原因。

+0

是的,事實證明var是空的,因爲我從終端調用腳本 - 因此跳過了apache。謝謝! – quinestor 2012-04-26 13:16:29

1

嘗試print_r($_SERVER),看看它是否真的成立

+0

一個空字符串如果我這樣做,它顯示爲未設定,(空) – quinestor 2012-04-24 12:35:34

+0

你打的命令行腳本?而不是來自瀏覽器的正常呼叫? – Antagonist 2012-04-26 09:23:09

+0

是的,就是這樣,謝謝:)。嘗試使用瀏覽器和那個作品 然後我想像Hakre說,這個變種來自apache,因爲在終端中調用跳過,那麼var是空的。 – quinestor 2012-04-26 13:15:40

0

如果可能Apache配置問題:您是否在Apache配置文件中定義了文檔根目錄?

否則,您可以通過使用繞過它:

dirname(__FILE__) 

或:

substr($_SERVER['SCRIPT_FILENAME'], 0, -strlen($_SERVER['SCRIPT_NAME'])); 
相關問題