2012-08-13 126 views
13

只是爲了確認,使用:文檔根目錄PHP

$_SERVER["DOCUMENT_ROOT"] 

與使用:/

在HTML

例如,如果當前文檔是:

folder/folder/folder/index.php 

我可以使用(在HTML)開始在roort:

/somedoc.html 

,並做同樣的PHP我會使用:

$_SERVER["DOCUMENT_ROOT"] . "/somedoc.html"; 

這是正確的嗎?有沒有更簡單的方法來做到這一點?

回答

18
<a href="<?php echo $_SERVER['DOCUMENT_ROOT'].'hello.html'; ?>">go with php</a> 
<br /> 
<a href="/hello.html">go to with html</a> 

自己試試看,發現它們不完全一樣。

$ _ SERVER [ 'DOCUMENT_ROOT']呈現一個實際的文件路徑(在我的計算機上運行,​​因爲它是自己的服務器,C:/ WAMP/WWW/

HTML的/渲染服務器URL的根,在我的情況爲localhost/

但是C:/wamp/www/hello.html和本地主機/ hello.html的其實都是同一個文件

+1

如果你想使用它說include(),它的問題不同於上面的超鏈接。 – 2012-08-13 04:02:08

+0

沒有理由發佈我的答案,因爲這是我正要說的。 – 2012-08-13 04:02:27

+0

包含有什麼不同? – Andrew 2012-08-13 04:02:53

5

只是/是指你的網站從公衆的HTML文件夾的根目錄DOCUMENT_ROOT指包含您的網站的服務器上的文件夾的本地路徑。

例如,我有一臺機器上的EasyPHP設置...

$_SERVER["DOCUMENT_ROOT"]給我file:///C:/Program%20Files%20(x86)/EasyPHP-5.3.9/www但我鏈接到只有/任何文件將是相對於我的www文件夾。

如果你想給你的服務器上的文件的絕對路徑(從服務器的根),你可以使用DOCUMENT_ROOT。如果你想從網站的根目錄給出文件的絕對路徑,只需使用/

-2

最簡單的方法就是擁有良好的網站結構並將其作爲常量編寫。

DEFINE("BACK_ROOT","/var/www/"); 
+1

我知道它的老,但是我偶然發現了這個,爲什麼如果你已經有了更多的常量一個php定義的服務器常量做這個,浪費代碼,cpu和內存 – DarkMukke 2013-11-04 10:35:45

+0

這個想法是,無論你在包含多深(文件夾式),這使得你永遠不會寫代碼相對於腳本,而不是用於定義根的代碼。 我用它來對抗今天許多程序員使用的Jerry-rigging方法。 – 2013-11-05 03:37:03

+5

是的,但這樣你的腳本就變得依賴於系統或位置,它永遠不應該是這樣的,應用程序應該是可移植的 – DarkMukke 2013-11-06 14:56:28