我正在使用命名空间并尝试自动加载需求。在__auto_load函数上,var class_name带有反斜杠。这引发了:
Warning: require(controller\Example\Test.php): failed to open stream: No such file or directory in ...
但如果我尝试要求controller/Example/Test.php;
它的作品。
我尝试在另一个服务器及其工作上运行相同的东西。然后我认为这是配置或PHP版本的问题。
我现在可以通过斜杠替换反斜杠来解决,但我想知道为什么会发生这种情况。
答案 0 :(得分:3)
因为反斜杠与正斜杠不同。反斜杠通常是用于转义字符的时间。 Windows对目录结构使用反斜杠,但大多数基于Unix的操作系统都使用普通斜杠。
如果你跑:
root@PC:~$ cd \
>
Linux会认为你试图逃避输入/换行并允许你继续输入你的命令。如果使用正斜杠,则会有所不同,它会将您带到根目录:
root@PC:~$ cd /
root@PC:/$
您可以随时使用PHP的常量DIRECTORY_SEPARATOR
:
$path = join(DIRECTORY_SEPARATOR, array('controller', 'Example', 'Test.php');
require($path);
来源:Anonymous