这是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