这是*nix 和 Windowsdefine
的包含路径的正确方法吗?
define( 'INCPATH', realpath( dirname( __FILE__ ) ) . '/' );
请注意我上面包含的尾部正斜杠。两个操作系统的包含/要求的正斜杠是否也相同?
编辑(已更新答案):
据我所知,下面的代码是为 *nix 和 Windows 操作系统普遍定义包含/需要路径的正确方法。请随时在下面的评论中更正任何内容。
让我感到困惑的是我看到的许多显示替换back-slashes (\)
into的示例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__
已经解决了符号链接。或者它可能包含在解析相对路径中?无论哪种方式,它似乎都巩固了我们的目标。