這是define
的一個包含路徑的正確方法* nix和Windows?設置PHP的正確方法包括* Nix和Windows的路徑
define('INCPATH', realpath(dirname(__FILE__)) . '/');
請注意上面包含的尾部正斜槓。對於這兩種操作系統來說,包括/是否需要相同的正斜槓?
EDIT(使用答案修訂版):
據我所知,我下面的代碼是普遍的定義既一個包含/需要路徑的正確方法的* nix和Windows操作系統的。請隨時糾正下面評論中的任何內容。
讓我感到困惑的是我看到的很多例子,它們將back-slashes (\)
替換爲forward-slashes(/)
。基於下面的一些答案,這是不必要的。
所以最終的正確的代碼(用於純粹的)是:
define('INCPATH', realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);
該代碼產生以下結果:
*nix: /path/to/the/file/
Windows: C:\Path To\the\file\
的簡要說明,工作我們從內部(__FILE__
)出(realpath()
):
FILE該文件的完整路徑和文件名。始終包含解析符號鏈接的絕對路徑。
dirname()返回的字符串是路徑刪除了任何尾隨/組件。負責刪除文件名。
realpath()返回成功時的規範化(標準化/標準化)絕對路徑名。結果路徑將沒有符號鏈接,'/./'
或'/../'
組件。我認爲這是包括徹底,因爲__FILE__
已解決符號鏈接。或者,也許它包括解析相對路徑?無論哪種方式,它似乎鞏固了我們的目標。
@Derek,很好的信息 - 謝謝。我會假設我的定義在兩個操作系統上都可以工作。 – Jeff 2009-12-24 21:21:31
我經常想知道爲什麼反斜槓還在使用,因爲它會導致逃生頭痛,正斜槓也會起作用。 – Ether 2009-12-24 21:30:19