2013-04-02 2 views
0

Я недавно установил PHPUnit на Mac (10.8.3) (работает с PHP 5.4.7). При попытке бежать тест phpunit testfile.php, например, я получаю:PHPUnit Никогда не использует правильный include_path

Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or 
directory in /Users/myusername/pear/share/pear/PHPUnit/Autoload.php on line 64 

Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' 
(include_path='.:') in /Users/myusername/pear/share/pear/PHPUnit/Autoload.php on line 64 

Файл, /Users/myusername/pear/share/pear/File/Iterator/Autoload.php существует.

php.ini правильно перечислены груш каталоги в пути включают:

.:/php/includes:/usr/local/apache/lib/php:/Users/myusername/pear/share/pear/

Но когда я var_dump(get_include_path()); внутри файла PHPUnit/Autoload.php, он печатает .:, как будто он пустой.

Вместо этого, сбросив значение php_ini_loaded_file, просто возвращается false.

Использование php -i |grep php\.ini и php --ini показывают только один php.ini используется/нагрузить:

Configuration File (php.ini) Path => /usr/local/apache/lib 
Loaded Configuration File => /usr/local/apache/lib/php.ini 

Я повторил var_dumps на include_path и loaded_ini_file от простого test.php файла я бежал из командной строки и они распечатывают правильно информации. Так что что-то, связанное с phpunit, не загружает права/любой php.ini.

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

ответ

1

Убедитесь, что файл php.ini, который вы используете, является загружаемым для cli php. По крайней мере, на моей установке PHP на Linux у меня есть два файла php.ini, один в файле /etc/php/cgi-php5.4/php.ini, а другой - на /etc/php/cli-php5.4/ php.ini. Если вы измените версию cgi, она не будет по умолчанию влиять на версию cli и приведет к тому, что путь include будет пустым.


Другое место для проверки - файл phpunit.xml. В нем есть раздел для указания пути включения. See here для имеющихся опций. Я не уверен, почему phpunit перезапустил путь, но это может быть способ решить проблему.

+0

Файл конфигурации (php.ini) Путь =>/usr/local/apache/lib Загруженный файл конфигурации => /usr/local/apache/lib/php.ini - Это единственное, что у меня есть и что показывает при использовании 'php -i | grep php \ .ini' - и' php -ini' не показывает никаких дополнительных/других ini-файлов – helion3

+0

Я повторил var_dumps из include_path и загруженного_и_файла из простого файла test.php, который я запускал из командной строки, и они распечатывают правильную информацию. Так что что-то, связанное с phpunit, не загружает права/любой php.ini. – helion3

+0

Интересно. Я нашел некоторые параметры конфигурации, которые могут помочь, проверьте ответ для деталей. – MJD

0

Решение было:

После запуска

`pear config-get php_bin` -i | grep -E Configuration\ File\|include_path 

Он показал, что груша использует другой INI путь, чем PHP-CLI был:

Configuration File (php.ini) Path => /etc 
Loaded Configuration File => (none) 
include_path => .: => .: 

Оказывается, груша была настроенный исходной/стандартной копией Mac OS для PHP, а не специальной версией, которую я установил позже.

Быстрое исправление, которое не может быть наилучшим долгосрочным было символическими ссылками INI файл, он пытается найти:

sudo ln -s /usr/local/apache/lib/php.ini /etc/php.ini

После phpunit FakeTest Команды работы и тесты выполняются.

В конце концов мне нужно переустановить/переконфигурировать Pear для работы с версией загруженного php.