PHPUnit: Warning: require (PHPUnit/Autoload.php): не удалось открыть поток: нет такого файла или каталога в /usr/local/bin/phpunit в строке 42
при запуске
Я получаю ошибку
Warning: require(PHPUnit/Autoload.php): failed to open stream: No such file or directory in /usr/local/bin/phpunit on line 42
Fatal error: require(): Failed opening required 'PHPUnit/Autoload.php' (include_path='.:') in /usr/local/bin/phpunit on line 42
/usr/local/bin/phpunit отображает следующее в строке 42:
require 'PHPUnit/Autoload.php';
какие-либо предложения по исправлению этого вопроса?
Обновление (1):
Мне не хватало php.ini в /etc/, поэтому я связал его, чтобы прочитать MAMP php.ini. Теперь я получаю
php -r 'foreach (explode(":", get_include_path()) as $path) echo $path . PHP_EOL;'
.
/Applications/MAMP/bin/php/php5.3.6/lib/php
/usr/local/bin/pear
/usr/local/share/pear/PHPUnit
работает
работает, но не выводит.
Любые предложения о том, что нужно проверить далее?
Обновление (2):
Вероятно, основная причина этой проблемы связана с вопросом
Ответы
Ответ 1
Я столкнулся с аналогичной проблемой на MAC OSX Lion. Я установил phpunit с менеджером пакетов PEAR, и когда я пытаюсь запустить его, я получил ошибку, как описано udo. Я смог решить его с помощью следующих простых шагов:
- Получить последний php-архив груши
curl http://pear.php.net/go-pear.phar > go-pear.php
- Установите архив с помощью
sudo php -q go-pear.php
Во время установки он обнаруживает, что include_path в вашем php.ini не содержит каталог PEAR PHP. Вы можете выбрать, чтобы он исправил это для вас автоматически при предоставлении опции.
Ответ 2
У вас должна быть папка, содержащая исходные файлы PHPUnit на PHP include path. Кроме того, PHPUnit/Autoload.php
был добавлен в 3.6, и, возможно, у вас есть более старая исходная папка 3.5.x. Проверьте папки, указанные с помощью
php -r 'foreach (explode(':', get_include_path()) as $path) echo $path . PHP_EOL;'
(или в Windows)
php -r"foreach (explode(':', get_include_path()) as $path) echo $path . PHP_EOL;"
и убедитесь, что один из них содержит папку PHPUnit
с Autoload.php
.
Обновление: Что касается вашего обновления, вы, вероятно, захотите удалить /usr/local/share/pear/PHPUnit
из пути include, потому что вы включаете PHPUnit/Autoload.php
, который должен быть расположен в /usr/local/share/pear
, который уже находится в include путь.
Чтобы убедиться, что PHPUnit работает, сначала запустите phpunit --version
, чтобы увидеть установленную версию. PHPUnit создает все тестовые примеры, которые он планирует запустить, прежде чем выводить что-либо. Если какой-либо из ваших тестовых случаев вызывает фатальную ошибку при загрузке, иногда вывод вообще не отображается. Это очень расстраивает. Начните с создания простейшего тестового примера, который не использует какой-либо из ваших кодов.
class MyTest extends PHPUnit_Framework_TestCase {
function testThatItWorks() {
self::assertTrue(true);
}
}
Запуск этого теста должен привести к одному прохождению теста. Попробуйте и вставьте то, что вы видите в своем вопросе.
Ответ 3
Я столкнулся с этой проблемой, когда я запускал phpunit.phar
из моего локального каталога, но также устанавливал PHPUnit как зависимость от композитора. Удаление зависимостей компоновщика PHPUnit устранило мою проблему.
Ответ 4
Чтобы добавить к предыдущим ответам: выполняется двойная проверка с файлом php.ini и убедитесь, что вы редактируете этот файл с дополнительными путями. Я использовал следующее, чтобы проверить загруженный php.ini
php -r 'phpinfo();'
Что мне сказал, что загруженный файл php.ini был /private/etc/php.ini
Затем я использовал "что", чтобы сообщить мне, где был установлен phpunit:
which phpunit
Затем я добавил этот путь к файлу php.ini, поэтому он выглядел так:
;***** Added by go-pear
include_path=".:/Users/admin/pear/share/pear:/php/includes:/usr/bin:/usr/lib/php/"
Только после того, как я сделал все, что "phpunit --version" и другие команды работали, как ожидалось.
Ответ 5
Следует отметить, что большинство пользователей, столкнувшихся с проблемой, с которыми сталкивается здесь, должны запускать команду
$phpunit
из командной строки. когда они получают вышеуказанную ошибку. Что большинство из нас не понимает в реальной проблеме, так это то, что PHP, используемый в командной строке, будет в значительной степени отличаться от того, что работает для вас на вашем веб-сервере. Лично я использую лампу, и даже если я правильно установил phpunit, используя грушу, я не смог выполнить эту важную часть в течение нескольких часов.
Устранение
- в любое время вам нужно запустить PHP script, для которого требуются ресурсы в include_path, убедитесь, что php.ini для соответствующего двоичного кода PHP используется правильно. case и point в моей установке ubuntu 12.04 с xampp, в мои два файла php включены
- строка командной строки i.e php5-cli находится в каталоге /etc/php 5/cli/
- xampp one i.e php, который используется apache для обслуживания моих страниц, найденных в /opt/lampp/etc/php.ini
Оба файла php.ini должны иметь желаемое и правильное объявление include_path, чтобы вы могли правильно загружать любые сценарии командной строки и serveride (скрипты, обслуживаемые apache).
Вернемся к нашему вопросу после правильной настройки php.ini, чтобы запомнить
- Перезапустите Apache, чтобы веб-сервер выбрал ваши изменения.
- Перезапустите сеанс терминала/командной строки, чтобы команда cli выбрала ваши изменения.
Общие ошибки, которые вызывают проблемы при изменении файлов в системах Linux/* nix
-
не забудьте запустить chwon для владения файлом php.ini, иначе вы даже не сможете их редактировать
-
Не забудьте запустить chmod и изменить значения, чтобы вы могли сохранить свои изменения, после чего вы можете вернуть все (контроль доступа в файле, то есть chwon и chmod, в предыдущее состояние) так, как они были, и это должно быть ok после перезапуска терминала и apache.
Удача
Ответ 6
Замечание Говарда Ло на Mac OSX очень полезно с замечанием Себастьяна Переса. Потому что замечание не в том, что хорошо отформатировано, возможно, оно не обращается. После обновления Mavericks OSX я во второй раз столкнулся с этой проблемой, U решил создать это полное решение Apple OSX для этой проблемы. Должен сказать, что я также установил MAMP-PRO с несколькими разными версиями php, поэтому мне нужно быть очень точным.
-
Проверьте, установлен ли php.ini в /private/etc. Если не выдавать команду:
$sudo cp/private/etc/php.ini.default/private/etc/php.ini
-
Получите последний php-архив груши
$curl http://pear.php.net/go-pear.phar > go-pear.php
-
Установите архив с помощью
$sudo php -q go-pear.php
-
Во время установки он обнаруживает, что include_path в вашем php.ini не содержит каталог PEAR PHP. Вы можете выбрать, чтобы он исправил это для вас автоматически при предоставлении опции.
-
После этих шагов мне пришлось снова установить phpunit, используя следующие команды:
$sudo pear channel-discover pear.phpunit.de
$sudo pear channel-find components.ez.no
$sudo pear channel-find pear.symfony-project.com
$sudo pear install phpunit/PHPUnit
Большое спасибо Говарду Лоу и Себастьяну Пересу.