2014-09-10 88 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