2011-11-24 63 views
4

我有一臺服務器,公共根位於:/var/www/example.com/html/

使用$_SERVER['DOCUMENT_ROOT']);我得到以下結果:

/var/www/example.com/html/ 

我會用什麼$_SERVER陣列鍵直接獲取公共根以上的路徑?也就是,這裏的一個:

/var/www/example.com/ 

這將不得不在多個環境,如本地和現場工作。不知道是否有某種方式做./ document_root排序的事情。

回答

9

dirname()返回目錄的父目錄,並且與平臺無關。

dirname($_SERVER['DOCUMENT_ROOT']); 

應返回:

/var/www/example.com 

如果需要結尾的斜線,那麼你可以追加DIRECTORY_SEPARATOR

dirname($_SERVER['DOCUMENT_ROOT']) . DIRECTORY_SEPARATOR; 
+2

請小心DOCUMENT_ROOT上的dirname。如果您的文件根目錄不具有尾部斜線,例如'/ var/www/example.com',dirname會把它改成'/ var/www'! – breiti

0

../是unixey的方式來表達上面所以文件夾,例如,在終端中,這些是相同的東西: /家庭/用戶/ /home/user/heavymark/../

如果OTOH需要支持Windows目錄命名,則必須完成移除路徑最後一位的工作。通常情況下,您可以通過使用正則表達式來捕獲除最後一個filepathbit之外的所有文件,但爲了支持Windows命名,您必須喜歡它來處理filepathbit /和filepathbit。

+0

''../ Windows上完美的作品也。 – Boann

相關問題