2014-09-10 67 views
0

我正在使用命名空间并尝试自动加载需求。在__auto_load函数上var class_name带有反斜杠。而这将引发:php需要反斜杠错误

Warning: require(controller\Example\Test.php): failed to open stream: No such file or directory in ...

但如果我尝试要求controller/Example/Test.php;其作品。

我试着在其他服务器及其工作上运行同样的事情。然后我认为这是配置或PHP版本的问题。

我现在可以通过用斜线替换反斜杠来解决,但我想知道为什么会发生这种情况。

+1

Linux路径使用'/' – 2014-09-10 21:25:25

+0

你可以显示你的autoload()函数的实现吗? – Crackertastic 2014-09-10 21:26:31

回答

2

因为反斜杠与正斜杠不同。反斜杠通常是逃避角色的时代。 Windows对目录结构使用反斜杠,但大多数基于Unix的操作系统将使用正常的斜线。


如果你运行:

[email protected]:~$ cd \ 
> 

Linux会认为你是在试图逃跑的输入/换行,并让你保持输入您的命令。如果您使用的是正斜杠,它会带你到根目录此不同的是:

[email protected]:~$ cd/
[email protected]:/$ 

你总是可以使用PHP的常量DIRECTORY_SEPARATOR的东西,如:

$path = join(DIRECTORY_SEPARATOR, array('controller', 'Example', 'Test.php'); 
require($path); 

来源: Anonymous

+0

谢谢,你清除了我的怀疑。 – Christian 2014-09-11 13:11:59