2009-11-08 65 views
0

我在本地機器上測試一個網站,我想知道什麼是寫入路徑的最佳方式,以確保它們在我上載網站時起作用到其最終位置。在本地(mac)和遠程服務器上運行的php路徑

一般來說,我對路徑有點困惑,在很多情況下,我必須對每條路徑進行調整,直到它工作,所以不希望被迫在生產站點上做同樣的事情!我不清楚何時使用$_SERVER['DOCUMENT_ROOT']。 例如,我有一個我想掃描的目錄,它位於根目錄下。那麼爲什麼我不能使用「/ dirname」?

$dir = $_SERVER['DOCUMENT_ROOT'] . '/uploads'; //this works 
// $dir = "/uploads"; //this doesn't work 

if (is_dir($dir)) { 
    //do something.. 
} 

回答

1

我不清楚何時使用 $_SERVER['DOCUMENT_ROOT']。例如,對於 示例,我有一個目錄,即我想要掃描的 ,它僅位於 根目錄下。那麼爲什麼我不能只使用 「/ dirname」?

當你在php文件中的根(/)路徑的工作是文件系統的根,而不是當你訪問你的網站,你得到的根源。

因此$dir = "/uploads";爲您提供文件系統根目錄。

爲了縮小你的問題,我會在配置文件中聲明一個變量,該變量指定你的php應用程序的根目錄,並使用該路徑+需要的任何更多。

0

如上所述,不能使用'/ path'的原因是因爲它指向文件系統的根目錄。

然而,不是宣稱定義根一個變量,我建議使用dirname(__FILE__)檢索完整路徑調用文件所在的目錄。

從那裏,相對路徑信息附加到文件你想要,而且你完全動態地結束了一條完整的路徑。

例如,如果你想在上面的文件的目錄,你希望把它列入使用「的header.php」文件: include(dirname(__FILE__) . '/../header.php');

那美妙之處在於PHP總會自動將正斜槓轉換爲主機操作系統所需的目錄分隔符。

0

我將定義一個變量/常量,描述應用程序的絕對文件系統路徑。事情是這樣的:

$appDir = rtrim(str_replace('\\', '/', realpath(dirname(__FILE__))), '/'); 

然後你有這個基本路徑,你可以從解決您的應用程序的文件:

include $appDir.'/library/foo/bar.php'; 

或者你甚至可以改變您的包括到該目錄路徑:

set_include_path($appDir); 
相關問題