Подтвердить что ты не робот

PHPUnit: Warning: require (PHPUnit/Autoload.php): не удалось открыть поток: нет такого файла или каталога в /usr/local/bin/phpunit в строке 42

при запуске

  • 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):

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

4b9b3361

Ответ 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

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