2015-05-22 83 views
1

向我推薦我應該在所有文件名的開頭使用$_SERVER['DOCUMENT_ROOT'],以防將頁面移動到另一個文件夾。

但是,它不工作。不知道爲什麼。我建立了一個測試頁面,prayerpond.com/test5.php用一個簡單的圖像,並把下面的...

<?PHP 
$doc_root = $_SERVER['DOCUMENT_ROOT'] . "/"; 
$root = substr($doc_root, 1); 
?> 

"<?PHP echo $root;?>main.css" 

<img src="home/wiseman/public_html/ads/blank_ad2.jpg" /> 
<img src="<?PHP echo $root;?>ads/blank_ad2.jpg" /> 
<img src="ads/blank_ad2.jpg" /> 

我想,也許在一開始的斜線被搞亂它,所以我試圖減但它也沒有效果。在上面的例子中,前兩個圖像不起作用,但第三個圖像不起作用。

任何想法我失蹤?在其下當前運行腳本

+3

你不想使用你的文檔根目錄。你想使用你的*網站根*。 –

+0

像'$ _SERVER ['DOCUMENT_ROOT']'和'$ _SERVER ['WEB_ROOT']'這樣的服務器變量並不總是保證由您的Web服務器自動設置。 http://php.net/manual/en/reserved.variables.server.php所以要小心使用它們。 – Squeegy

回答

0

DOCUMENT_ROOT is the

文檔根目錄,作爲服務器的配置文件中定義。

它指向您的文件的物理路徑,這是你的情況不需要;你想指向公開的URL。所以,你可以嘗試使用dirname(__FILE__)代替:

$root = dirname(__FILE__); 

或使用其他$_SERVER變量,如:

$root = $_SERVER['SERVER_NAME']; 
0

首先是關於$_SERVER['DOCUMENT_ROOT']

文檔根目錄下的當前運行腳本正在執行,如服務器的配置文件中所定義。

所以它是一個文檔根目錄,由服務器配置定義。但是您無法使用此路徑加載圖像。你需要一個URI。

爲了得到URI我會推薦這樣的:

function url(){ 
    return sprintf(
    "%s://%s%s", 
    isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', 
    $_SERVER['SERVER_NAME'], 
    $_SERVER['REQUEST_URI'] 
); 
} 

附:獲取根路徑的最好方法是將dirname(__FILE__)放入index.php(根索引)中。

0

不幸的是,這些工作都沒有。無論如何不是圖像。我知道主機名,所以我只是手動添加。這並不適用於必需()。我必須爲此使用document_root。

相關問題