2013-10-02 3 views
0

Я хотел бы протестировать мое приложение php в phpunit. Моя проблема заключается в том, что require_once не находит файл, что бы я хотел проверить. Я получаю эту ошибку:Ошибка PHP require_once с относительным путем

Warning: require_once(C:\MyProject\phpunit-tesztek\include/../include/form.php): failed to open stream: No such file or directory in C:\MyProject\phpunit-tesztek\include\FormTest.php on line 4

Так что поиск файла form.php в включают /../ включает/form.php, что это неправильно.

Я использовал этот код:

require_once 'PHPUnit/Autoload.php';

require_once(__DIR__.'/../include/form.php');

файл Test находится в C: \ MyProject \ PHPUnit-tesztek \ включают \ FormTest.php

и файл, что я хочу, чтобы проверить в: C: \ MyProject \ include \ form.php

В чем проблема?

+1

Проблема заключается в том, что путь, который вы хотите использовать («C: \ MyProject \ include \ form.php»), не соответствует указанному вами пути: «' C: \ MyProject \ phpunit-tesztek \ include/../ включить/form.php'». Из сообщения об ошибке должно стать ясно, видите ли вы это? См. Также [ответ Стивена Скотта] (http://stackoverflow.com/a/19140099/367456). – hakre

+1

Пожалуйста, поделитесь тем, почему вы не смогли выбрать ответ. Есть ли что-то непонятное, как это решить? Пожалуйста дай нам знать. – hakre

ответ

4

Проблема относительный путь. __DIR__ использует каталог, в котором находится файл без разделителя. Затем вы меняете путь с относительным путем (/../), чтобы перейти в один каталог.

См ручного ввода ->PHP Manual for __DIR__

__DIR__ will return C:\MyProject\phpunit-tesztek\include 

Вы ищете, чтобы использовать C:\MyProject\include\ тракта

__DIR__ . '/../../include/Form.php'; 

Обычно я использую dirname(__FILE__) себя, как он получает текущий каталог исходного кода файл (который является абсолютным), позволяя моему относительному пути перемещаться из этого местоположения.

+1

'dirname (__ FILE __)' устаревший способ писать точно '__DIR__ ', который был введен в PHP 5.3 и не был доступен ранее. Он был добавлен в запасные вызовы' dirname() 'Just FYI :) – hakre

+0

@hakre Спасибо за FYI. У меня есть ссылки на старые, поскольку 5.2 все еще использовался в областях, а для некоторых из команды немного яснее, что вы получаете каталог того, что передается. В то время как __DIR__ является каталогом скрипта, вы можете использовать dirname() для другой переменной, чтобы получить свой путь. \ –

0

Try удаления ../

require_once(DIR.'include/form.php');

+0

Это не работает. Теперь это поиск в includeinclude/form.php – user2695543

0

Используйте магическая константа DIR:

require_once(__DIR__ . '/../include/form.php'); 
+0

извините, похоже, что SO текстовый синтаксический анализатор – Jokerius

+0

такой же результат :(он не работает. – user2695543

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