我在OSX(Mavericks)主机的Fedora VM中运行LAMP。
VM挂载文件夹中的文件是/media/sf_www/application/Some/Name/Space/FileName.php
<?php
namespace Some\Name\Space;
die(__FILE__);
?>
输出
/media/sf_www/application/Some\Name\Space\FileName.php
但是,我在linux主机上有相同的站点在生产中运行,同一个脚本用正斜杠输出所有内容。
我们假设我无法触摸代码。
我可以在我的虚拟机配置中使用php配置输出正斜杠吗?
为什么会这样? OSX也应该使用正斜杠,即使它从VM托管机器获取目录分隔符。
编辑: 只有通过Kohana加载文件时才会发生这种情况。如果我直接访问脚本(apache或CLI),输出是正确的(正斜杠)
答案 0 :(得分:0)
这是一个相关的问题:PHP directory separators, forcing forward slash; non-intrusive
它给出的答案是,没有任何配置你改变使它只使用一种类型的斜杠。
为什么会这样?我不知道,也许这是Kohana的一个准错误。也许部分是PHP的错误,因为将路径连接在一起的函数对于它接受什么样的斜杠有点过于不可知。
这有什么关系吗?如果你必须有一种斜线,你可以先对它str_replace('\\', '/', __FILE__);
。