ошибка phpunit require_once ()


79

Недавно я установил phpunit на свой сервер через установщик груши.

Когда я иду запустить тест, я получаю следующую ошибку:

Предупреждение PHP: require_once (PHPUnit / Util / Filter.php): не удалось открыть поток: нет такого файла или каталога в / usr / bin / phpunit в строке 44

Неустранимая ошибка PHP: require_once (): Не удалось открыть 'PHPUnit / Util / Filter.php' (include_path = '.: / Usr / bin / php') в / usr / bin / phpunit в строке 44

После некоторого поиска я попытался внести некоторые изменения в include_path в моем файле php.ini на сервере. Но это ничего не дало.

Есть идеи, что может быть причиной этого?

Ответы:


123

ОБНОВЛЕНИЕ: по состоянию на ноябрь 2013 года и Ubuntu 12.04 этих двух команд должно хватить:

sudo pear config-set auto_discover 1
sudo pear install pear.phpunit.de/PHPUnit

Ниже приводится более старый ответ. Проблема известная, хотя прошло уже почти полтора года. Прочтите об этом здесь

Покрытие кода должно быть установлено для правильной работы phpunit

Здесь описано, что вам нужно сделать:

установка покрытия кода через PEAR

В основном вам нужно ввести (с помощью sudo, если у вас нет разрешений, учитывая, что phpunit уже установлен):

pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear install phpunit/PHP_CodeCoverage

я получаю ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_php" ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_data"ошибку на последнем шаге.
Eray

6
Правильное решение для меня было в первой ссылке, которую вы дали: bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544/comments/…
EnigmaCurry

2
Я должен был установить include_path в обоих файлах php.ini, /etc/php5/apache2/php.ini, /etc/php5/cli/php.iniи должен был сделать его включать родителей и подкаталоги:include_path = ".:/usr/share/php:/usr/share/php/PEAR"
варочные панели

7
В Ubuntu 12.04 мне также пришлось войти, sudo pear channel-discover pear.symfony.comа затем преуспел сsudo pear install --alldeps phpunit/PHPUnit
skierpage

2
Обратите внимание! You have installed PHPUnit via PEAR. This installation method is no longer supported and http://pear.phpunit.de/ will be shut down no later than December, 31 2014. ... что сделает этот ответ недействительным.
Madbreaks

34

У меня была эта проблема в OS X. Исправлена ​​с помощью следующих команд, которые принудительно переустанавливали все зависимости php, в том числе пару пакетов из других каналов, которые еще не были настроены:

sudo pear channel-discover pear.symfony-project.com
sudo pear channel-discover components.ez.no
sudo pear install --alldeps phpunit/PHPUnit

Это единственное решение, которое сработало для меня в Ubuntu 11.10.
mpen

4
Nvm. Он установился нормально, но когда я пытаюсь запустить какие-либо реальные тесты, я получаюPHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/share/php/PHPUnit/Framework.php on line 46
mpen

2
Что касается меня, я сделал это, а затем получил сообщение об ошибке, которое, как мне кажется, разрешено с помощью stackoverflow.com/a/9186866/470749 Ubuntu 12.04
Райан

1
У меня не сработало - мне нужно channel-discover pear.phpunit.deустановить phpunit / phpunit, а затем я получаю сообщение об require_once(PHPUnit/Util/Filter.php)ошибке ... файла нет в моей файловой системе.
ashgromnies

Обратите внимание! You have installed PHPUnit via PEAR. This installation method is no longer supported and http://pear.phpunit.de/ will be shut down no later than December, 31 2014. ... что сделает этот ответ недействительным.
Madbreaks

13

https://bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544

и особенно этот комментарий для ubuntu 11.04, а также может быть и для некоторых других

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

speshu @ speshu-laptop: ~ $ sudo груша апгрейд груша

   downloading PEAR-1.9.2.tgz ...
   Starting to download PEAR-1.9.2.tgz (295,120 bytes)
    .....................................................done: 295,120 bytes
    upgrade ok: channel://pear.php.net/PEAR-1.9.2
    PEAR: Optional feature webinstaller available (PEAR's web-based installer)
    PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
    PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
    PEAR: To install optional features use "pear install pear/PEAR#featurename"

Я сделал это, как только установил PHPUnit и по-прежнему получаю ошибку, но ответ @StevenGreen мне помог =) но все в порядке, вы указываете на это =)
Metafaniel


4

https://github.com/sebastianbergmann/php-code-coverage

sb@ubuntu ~ % pear channel-discover pear.phpunit.de
Adding Channel "pear.phpunit.de" succeeded
Discovery of channel "pear.phpunit.de" succeeded

sb@ubuntu ~ % pear channel-discover components.ez.no
Adding Channel "components.ez.no" succeeded
Discovery of channel "components.ez.no" succeeded

sb@vmware ~ % pear install phpunit/PHP_CodeCoverage
downloading PHP_CodeCoverage-0.9.0.tgz ...
Starting to download PHP_CodeCoverage-0.9.0.tgz (108,376 bytes)
.........................done: 108,376 bytes
install ok: channel://pear.phpunit.de/PHP_CodeCoverage-0.9.0

2

(include_path = '.: / usr / bin / php')

Вы уверены, что добавили его в include_path?

Также может помочь, если мы увидим ваш ini-файл и фрагмент include_path в нем ...


Да, я пробовал этот путь и несколько других. Комментарии здесь ограничены 600 символами, поэтому я не уверен, как бы показать вам свой ini-файл. include_path = ".: / usr / bin / php"
user185305, 07

В каталоге / usr / bin находятся исполняемые файлы, а не библиотеки.
Алистер Булман,

2

Я нашел это!

Похоже, PEAR установил PHPUnit в / usr / share / pear. Не знаю почему, но вот где это. Должно быть (мт) вещь.

В любом случае, я готов. Спасибо за помощь.


2

То же самое происходит, если у вас устаревшая или неполная установка PHPUnit. Помните, что после настройки PEAR вы должны добавить канал PHPUnit.de , чтобы получить обновленный пакет.


2

В моем случае я решил это, добавив /usr/share/php/PEARв include_path.

Я использую Ubuntu 10.04.2.


1

Если у вас есть проблемы с доступом к компонентам, попробуйте другой способ.

  1. Установить грушу

    sudo apt-get install php-pear
    
  2. Установите phpunitс помощью груши.

    pear config-set auto_discover 1
    pear install pear.phpunit.de/PHPUnit
    
  3. Установите phpunit/ Selenium, но сначала вам нужно установить curlмодуль

    sudo apt-get install php5-curl 
    pear install phpunit/PHPUnit_Selenium
    

0

У меня была такая же проблема. Netbeans сообщал, что версия phpunit слишком старая (а это не так). Запуск скрипта phpunit напрямую показал вышеуказанные сообщения.

Я решил это добавив:

include_path=".:/usr/share/php"

К /etc/php5/cli/php.ini

ОБРАТИТЕ ВНИМАНИЕ, что файл php.ini - это файл php CLI (команда), а не файл php.ini, используемый для apache!


0

Моя первоначальная проблема заключалась в том, что я не мог получить версию php для командной строки (yum install php или yum install php-cli) для обновления до => php5.2.7 Я застрял на версии 5.1

Я уже скомпилировал php 5.3.3 для использования с apache. Поэтому я устанавливаю символическую ссылку из / usr / bin / php (по умолчанию в командной строке) на мою скомпилированную версию в / var / php5 / bin / php, чтобы получить отчет php из командной строки 5.3.3

Затем я повторил шаги по установке груши для phpunit

Но когда я запускал phpunit, он все еще нуждался в покрытии кода.

Итак, я отыскал покрытие кода в / var / php5 / lib / php / PHP / CodeCoverage и добавил его в путь включения в php.ini include_path = ".: / Var / php5 / lib / php /"

Обязательно добавьте его в путь включения без / PHP, потому что phpunit начинается с PHP / (заглавные буквы) в поисках покрытия кода. Требуется ошибка открытия 'PHP / CodeCoverage / Filter.php'


0

У меня была такая проблема. Я разрабатывал сайт фреймворка zend. Наконец, мне удалось решить эту проблему, удалив установку zend и удалив / прокомментировав путь включения в файлах php.ini ванной в apache и cli. Для разработки сайта с помощью zend нам не нужно устанавливать zend. Insted мы можем скопировать библиотеку в папку нашего сайта




0

Ubuntu 12.04:

sudo pear channel-discover pear.symfony.com
sudo pear install --alldeps phpunit/PHPUnit

0

У меня была такая же проблема с Windows 8. Как и в верхнем ответе, мне нужно было запустить командную строку, но не забудьте запустить cmd.exe от имени администратора . Затем две команды

pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.