var_dump(DIRECTORY_SEPARATOR) // string '\' (length=1)
var_dump(file_exists("C:/1212.txt")); // true
var_dump(file_exists("C:\1212.txt")); // false
var_dump(file_exists("C:".DIRECTORY_SEPARATOR."1212.txt")); // false
DIRECTORY_SEPARATOR
做什么?使用DIRECTORY_SEPARATOR
?
答案 0 :(得分:11)
DIRECTORY_SEPARATOR做了什么?
DIRECTORY_SEPARATOR
等于"/"
(Unix)或"\"
(Windows),具体取决于平台。
为什么DIRECTORY_SEPARATOR的上述情况属于假?
因为双引号字符串"\123"
会转换为"Q"
(PHP Manual中的更多详细信息)。
构建Windows路径时,您应该转义反斜杠:"C:\\1212.txt"
或使用单引号字符串:'C:\1212.txt'
。
更好更清洁的方法是在路径字符串中直接使用Unix目录分隔符"/"
(没有任何常量),在Windows下可以正常工作:"C:/1212.txt"
。
答案 1 :(得分:9)
当来到PS
- Path Separators
时,这里有一个提示:
Linux仅支持/
Windows支持\
和/
所以我的建议是制作所有内容/
define('DS','/'); //Should work.
如果您构建的应用程序是跨平台的,那么请考虑这样做。
define('DS','/');
define('BASE_ROOT',str_replace('\\',DS,dirname(__FILE__)));
require_once BASE_ROOT . DS . 'includes' . DS . 'init.php';
然后它应该在两个平台上运行良好。
了解:
答案 2 :(得分:3)
尝试:
var_dump(file_exists("C:\\1212.txt"));
反斜杠是一个转义字符,用于将一个字符串添加到字符串中,您需要将其与另一个字符串一起使用。
答案 3 :(得分:1)
DIRECTORY_SEPARATOR
在Unix系统上返回/
,在Win上返回\
。
答案 4 :(得分:0)
DIRECTORY_SEPARATOR
是一个PHP常量,帮助程序员编写适用于不同操作系统的脚本。
假设您使用的是Windows计算机,看起来您的配置错误。
答案 5 :(得分:0)
我在博客上看到过一些错误,其他地方关于Windows的“正常”有正斜杠,并且不需要 *目录分隔符常量提供\或/字符取决于你是否正在运行Windows, Nix等 ...
这些常量非常/必要 因为Windows中的转发斜杠支持仅是/部分/实现。
大多数Windows命令行实用程序都有使用/,正斜杠而不是连字符访问的开关, - 这是unix样式。这就是目录分隔符常量在脚本中很重要的原因。
破碎的例子:
C:\ Temp> del C:/ Temp / * .o / S / Q
错误消息:无效的开关 - “Temp”。
C:\温度>
答案 6 :(得分:0)
DIRECTORY_SEPARATOR非常不必要。
恕我直言,应该放弃明确。
没有使用除“/”以外的操作系统,我的意思是运行网络服务器的操作系统(MacOs classic?认真吗?)
要评论“Wind And Flame”的回复,他的例子也被打破了,因为如果你决定执行系统命令,那么你在任何情况下都会失去可移植性。当然,系统命令以系统语法表示。但是,包含系统调用的每个PHP命令(例如fopen,file_get_content等)都可以在Windows上与'/'一起使用。