2014-09-10 5 views
0

Я использую пространство имен, и требуется автоматическая загрузка. В функции __auto_load имя класса var имеет обратную косую черту. И это бросает:php требует с ошибкой обратной косой черты

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

Но если я пытаюсь требовать controller/Example/Test.php; своих работ.

Я попытался запустить то же самое на другом сервере и его работах. Тогда я думаю, что это проблема конфигурации или версии PHP.

Теперь я могу решить, заменив обратную косую черту, но я хочу знать, почему это происходит.

+1

Использование пути к Linux '/' –

+0

Можете ли вы показать свою реализацию функции autoload()? – Crackertastic

ответ

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

Смежные вопросы