2016-10-11 50 views
2

網站的根URL考慮我的項目目錄結構如下,獲取PHP

-public_html 
    -projects 
    -folder1 
     index.php \\code is written here 
    +folder2 
    +downloads 

我試圖通過$_SERVER['DOCUMENT_ROOT']獲取根目錄,但似乎返回的字符串是不是我所期望的形式。

我的網站內的我的目錄是(基本上)public_html/projects/folder1。使用文檔根目錄時,在網站上執行時返回的字符串如下所示: /home/site_name/public_html如果要共享鏈接,則無法工作,因爲我正在使用它將文件存儲在目錄中。所以,我想是這樣,它應該返回,www.site_name.com/downloads

__DIR__是給從那裏它被稱爲(folder1/index.php)整個文件的路徑,但我想進入主文件夾(public_html/downloads),而不是在同一個文件夾作爲索引文件。

是否還有其他的PHP函數,可以幫助達到在下載文件夾中的public_html和可以像,www.sitename.com/downloads訪問/ ...

+2

看整個數組,然後爲自己選擇了該項目的指標最適合你:'回聲'

' . print_r($_SERVER) . '
';' –

回答

3

要返回當前php文件的文件夾,請使用此腳本。

$url = $_SERVER['REQUEST_URI']; //returns the current URL 
$parts = explode('/',$url); 
$dir = $_SERVER['SERVER_NAME']; 
for ($i = 0; $i < count($parts) - 1; $i++) { 
$dir .= $parts[$i] . "/"; 
} 
echo $dir; 
+0

看起來很不潔: -/ – Martin

+0

Martin,老實說,我在很多網站上看到過這種類型的代碼,但作爲初學者,這段代碼是這是我能夠完全理解的唯一一個。感謝@linkan非常好地向我解釋爆炸功能。 :) –

1

你想用$_SERVER['SERVER_NAME']來獲取該網站的根網址。您可以使用它來獲取到您的下載文件夾的URL。

$downloads_url = $_SERVER['SERVER_NAME'] . '/downloads/'; 
+0

這個工作,但現在如果我不得不在服務器上使用這個開頭dir,它會工作嗎?像'$ target_dir = $ _SERVER ['SERVER_NAME'] \ downloads \ file'。現在,如果我使用'move_uploaded_file(...)'將上傳的文件移動到這個目錄中? –

+1

非常感謝...更新後的答案就是我所要求的... –

0

constants.php:

define('PROTOCOL',(!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS'] == 'on')) ? 'https://' : 'http://',true); 
define('DOMAIN',$_SERVER['HTTP_HOST']); 
define('ROOT_URL', preg_replace("/\/$/",'',PROTOCOL.DOMAIN.str_replace(array('\\',"index.php","index.html"), '', dirname(htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES))),1).'/',true);// Remove backslashes for Windows compatibility 

然後,在use