繁体   English   中英

设置PHP的正确方法包括* Nix和Windows的路径

[英]Proper way to set PHP include path for *Nix and Windows

这是为* nix和Windows define包含路径的正确方法吗?

define( 'INCPATH', realpath( dirname( __FILE__ ) ) . '/' );

请注意上面包含的尾随正斜杠。 两个操作系统的包含/需要相同的正斜杠吗?

编辑(更新答案):

根据我的收集,下面的代码是为nix和Windows操作系统普遍定义include / require路径的正确方法。 请在下面的评论中随意更正任何内容。

令我感到困惑的是我看到的许多示例,显示将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__已经解析了符号链接。 或者它可能包括解决相对路径? 无论哪种方式,它似乎巩固了我们的目标。

正斜杠适用于两种操作系统,这是可行的方法。

我找不到对此的绝对引用,但它在PHP手册中的几个地方都有说明,就像这里这里一样 而且,它适用于我,一个Windows和Linux用户。

最后,您可能最终在Windows上指定混合路径,例如c:\\\\apache\\\\htdocs\\\\myapp/index.php并且一切正常。

或者,您可以使用PHP的预定义常量DIRECTORY_SEPARATOR ,它将为您提供特定于操作系统的目录分隔符。 另见http://www.php.net/manual/en/dir.constants.php

令很多人惊讶的是, /在Windows和MSDOS上运行良好。 在路径名中,它甚至可以在OpenVMS上运行。

但是,如果您在PHP中为路径执行某些操作,则数组将比字符串更方便。

$MYPATH = array ('.', '/usr/lib/', '/usr/share/lib');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM