PHPUnit: Предупреждение: требуется (PHPUnit / Autoload.php): не удалось открыть поток: нет такого файла или каталога в / usr / local / bin / phpunit в строке 42 - PullRequest
18 голосов
/ 01 декабря 2011

при работе

  • phpunit

Я получаю ошибку

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

работает

  • phpunit

работает, но не выводит.

Любые предложения, что проверитьдальше?

Обновление (2):

Вероятно, основная причина этой проблемы связана с вопросом

Ответы [ 6 ]

12 голосов
/ 19 января 2012

Я столкнулся с аналогичной проблемой на MAC OSX Lion.Я установил phpunit с менеджером пакетов PEAR, и когда я попытался запустить его, я получил ошибку, как описано в udo.Я смог решить это с помощью следующих простых шагов:

  1. Получить последнюю версию php-архива pear curl http://pear.php.net/go-pear.phar > go-pear.php
  2. Установить архив с помощью sudo php -q go-pear.php

Во время установки он обнаруживает, что include_path в вашем php.ini не содержит директорию PEAR PHP.Вы можете позволить ему исправить это для вас автоматически, когда вам будет предоставлена ​​опция.

5 голосов
/ 24 июля 2014

Я столкнулся с этой проблемой, когда запускал phpunit.phar из своего локального каталога, но также установил PHPUnit как зависимость от композитора. Удаление зависимости от компоновщика PHPUnit устранило мою проблему.

5 голосов
/ 01 декабря 2011

У вас должна быть папка, содержащая исходные файлы PHPUnit на вашем пути включения PHP .Кроме того, 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 из пути включения, поскольку вы включаете PHPUnit/Autoload.php, который должен находиться в /usr/local/share/pear, который уже находится в пути включения.

Чтобы убедиться, что PHPUnit работает, сначала запустите phpunit --version, чтобы вы могли увидеть установленную версию.PHPUnit создает все тесты, которые он планирует выполнить, прежде чем что-либо выводить.Если какой-либо из ваших тестовых примеров приводит к фатальной ошибке при загрузке, иногда вывод вообще не отображается.Это очень расстраивает.Начните с создания самого простого из возможных тестовых примеров, в котором не используется ваш код.

class MyTest extends PHPUnit_Framework_TestCase {
    function testThatItWorks() {
        self::assertTrue(true);
    }
}

Выполнение этого теста должно привести к однократному прохождению теста.Попробуйте и вставьте то, что видите в своем вопросе.

3 голосов
/ 28 июля 2012

Чтобы добавить к предыдущим ответам: перепроверьте с загружаемым файлом php.ini и убедитесь, что вы редактируете ТО файл с дополнительными путями.Я использовал следующее, чтобы проверить загруженный php.ini

php -r 'phpinfo();'

, который сказал мне, что загруженный файл php.ini был / private / etc / php.ini

Затем я использовал «which», чтобы сказать мне, где был установлен 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" и другие команды работали как положено.

2 голосов
/ 28 октября 2013

Замечание Говарда Ло на Mac OSX очень полезно с замечанием Себастьяна Переса. Поскольку это замечание не очень красиво отформатировано, оно может быть упущено. После обновления Mavericks OSX, которое я запускал во второй раз для этой проблемы, U решил создать это полное решение Apple OSX для этой проблемы. Я должен сказать, что я также установил MAMP-PRO с несколькими различными версиями php, поэтому я должен быть очень точным.

  1. Проверьте, установлен ли php.ini в / private / etc. Если нет, введите команду:

    $ sudo cp /private/etc/php.ini.default /private/etc/php.ini

  2. Получить последний php архив груши

    $ curl http://pear.php.net/go-pear.phar> go-pear.php

  3. Установить архив с

    $ sudo php -q go-pear.php

  4. Во время установки он обнаруживает, что include_path в вашем php.ini не содержит директорию PEAR PHP. Вы можете позволить ему исправить это для вас автоматически при наличии опции.

  5. После этих шагов мне пришлось снова установить phpunit, используя следующие команды:

    $ sudo pear channel-Discover pear.phpunit.de

    $ sudo pear channel-Discover components.ez.no

    $ sudo pear channel-Discover pear.symfony-project.com

    $ sudo pear install phpunit / PHPUnit

Большое спасибо Говарду Ло и Себастьяну Пересу.

2 голосов
/ 31 января 2013

Следует отметить, что большинство пользователей, столкнувшихся с возникшей проблемой, должны запускать команду

$ phpunit

из командной строки. когда они получают вышеуказанную ошибку. Что большинство из нас не понимает в реальной проблеме, так это то, что PHP, используемый в командной строке, в основном будет сильно отличаться от того, что работает для вас на вашем веб-сервере. Лично я использую lampp, и хотя я успешно установил phpunit с помощью pear, я не смог реализовать эту важную часть в течение нескольких часов.

1010 * Помощь * - в любое время, когда вам нужно запустить PHP-скрипт, требующий ресурсов в include_path, убедитесь, что php.ini для соответствующего бинарного файла PHP, который вы используете, адекватно предоставлен. в моей установке Ubuntu 12.04 с xampp мои два бинарных файла php включают

  • командная строка, то есть php5-cli, находящаяся в / etc / php5 / cli / directory
  • xampp one, т.е. php, который используется apache для обслуживания моих страниц, найденный в /opt/lampp/etc/php.ini

Оба файла php.ini должны иметь желаемое и правильное объявление include_path, чтобы вы могли корректно загрузить любые сценарии командной строки и серверы (сценарии, обслуживаемые apache).

Вернемся к нашему вопросу после правильной настройки php.ini. Не забудьте

  • Перезапустите Apache, чтобы веб-сервер принял ваши изменения
  • Перезапустите сеанс терминала / командной строки, чтобы в командной строке Cliop были приняты ваши изменения

Распространенные ошибки, которые вызывают проблемы при изменении файлов в Linux / * nix Systems

  • не забудьте запустить chwon для владения файлом php.ini, иначе вы даже не сможете их редактировать

  • не забудьте запустить chmod и изменить значения, чтобы позволить вам сохранить ваши изменения, после чего вы можете вернуть все (контроль доступа к файлу, т.е. chwon и chmod в предыдущее состояние) в том виде, в котором они были и должны быть нормально после перезапуска терминала и apache.

Удачи

...