помилка 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 цих 2 команд має бути достатньо:

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"помилку на останньому кроці.
Ерей,

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)помилку ... файлу ніде немає в моїй системі filess.
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-ноутбук: ~ $ 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

(включити_путь = '.: / usr / bin / php')

Ви впевнені, що додали його до include_path?

Це також може допомогти, якщо ми побачили ваш файл ini та фрагмент include_path у ньому ...


Так, я спробував цей шлях і ще кілька. Коментарі тут обмежені 600 символами, тому я не впевнений, як показати вам свій файл ini. include_path = ".: / usr / bin / php"
user185305

/ usr / bin - це місце, де живуть виконувані файли, а не бібліотеки.
Алістер Бульман,

2

Я знайшов це!

Схоже, PEAR встановив PHPUnit у / usr / share / pear. Не знаю, чому, але це де. Мабуть, це (mt) річ.

У будь-якому разі, я все готовий. Дякую за допомогу.


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/ Селен, але спочатку потрібно встановити 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, щоб отримати звіт про командний рядок 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 та видаливши / коментуючи шлях включення у файлах bath php.ini в apache та cli. Для розробки сайту з zend нам не потрібно встановлювати zend. За бажанням ми можемо скопіювати бібліотеку в папку нашого сайту





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.