Błąd phpunit require_once ()


79

Niedawno zainstalowałem phpunit na moim serwerze za pomocą instalatora gruszki.

Kiedy idę przeprowadzić test, pojawia się następujący błąd:

Ostrzeżenie PHP: require_once (PHPUnit / Util / Filter.php): nie udało się otworzyć strumienia: Brak takiego pliku lub katalogu w / usr / bin / phpunit w linii 44

Błąd krytyczny PHP: require_once (): nieudane otwarcie wymagane 'PHPUnit / Util / Filter.php' (include_path = '.: / Usr / bin / php') w / usr / bin / phpunit w linii 44

Po przeprowadzeniu wyszukiwania, spróbowałem wprowadzić pewne modyfikacje do include_path w moim pliku php.ini na serwerze. Ale to nic nie dało.

Masz jakiś pomysł, co może być przyczyną tego?

Odpowiedzi:


123

AKTUALIZACJA: Od listopada 2013 r. I Ubuntu 12.04 te 2 polecenia powinny wystarczyć:

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

Poniżej znajduje się starsza odpowiedź. To znany problem, chociaż minęło prawie półtora roku. Przeczytaj o tym tutaj

Pokrycie kodu musi być zainstalowane, aby phpunit działał poprawnie

To, co musisz zrobić, zostało opisane tutaj:

instalacja pokrycia kodu przez PEAR

Zasadniczo musisz wpisać (w sudo, jeśli nie masz uprawnień, zakładając, że phpunit jest już zainstalowany):

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

otrzymuję ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_php" ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_data"błąd na ostatnim kroku.
— Eray

6
Prawidłowe rozwiązanie dla mnie było w pierwszym linku, który podałeś: bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544/comments/…
— EnigmaCurry

2
Musiałem ustawić include_path w obu plików php.ini /etc/php5/apache2/php.ini, /etc/php5/cli/php.inii musiał zrobić to m.in. rodziców i podkatalogi:include_path = ".:/usr/share/php:/usr/share/php/PEAR"
— kuchenki

7
Na Ubuntu 12.04 musiałem też wejść, sudo pear channel-discover pear.symfony.coma potem udało mi sięsudo pear install --alldeps phpunit/PHPUnit
— narciarz

2
Zwróć uwagę! 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. ... co unieważni tę odpowiedź.
— Madbreaks

34

Miałem ten problem na OS X. Naprawiłem go za pomocą następujących poleceń, które wymuszają ponowną instalację wszystkich zależności php, w tym kilka pakietów z innych kanałów, które nie były jeszcze skonfigurowane:

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

To jedyne rozwiązanie, które działało u mnie w Ubuntu 11.10.
— mpen

4
Nvm. Zainstalował się dobrze, ale kiedy próbuję uruchomić jakiekolwiek rzeczywiste testy, które otrzymujęPHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/share/php/PHPUnit/Framework.php on line 46
— mpen

2
Dla mnie zrobiłem to, a następnie otrzymałem błąd, który moim zdaniem został rozwiązany przez stackoverflow.com/a/9186866/470749 Ubuntu 12.04
— Ryan

1
Nie działa dla mnie - muszę channel-discover pear.phpunit.demieć możliwość zainstalowania phpunit / phpunit, a następnie pojawia się require_once(PHPUnit/Util/Filter.php)błąd ... pliku nie ma nigdzie w moim systemie plików.
— ashgromnies

Zwróć uwagę! 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. ... co unieważni tę odpowiedź.
— Madbreaks

13

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

a szczególnie ten komentarz dotyczący ubuntu 11.04 i może być także dla niektórych innych

mimo że wykonałem te kroki zgodnie z zaleceniami powyżej, nie udało mi się go uruchomić, ale po uaktualnieniu gruszki z 1.9.1 do 1.9.2 działa idealnie, po prostu zrób to

speshu @ speshu-laptop: ~ $ sudo pear upgrade pear

   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"

Zrobiłem to, gdy tylko zainstalowałem PHPUnit i nadal otrzymałem błąd, ale odpowiedź @StevenGreen pomogła mi =), ale jest ok, wskazujesz to =)
— 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')

Czy na pewno dodałeś go do include_path?

Może też pomóc, gdybyśmy widzieli Twój plik ini i fragment kodu include_path w nim ...


Tak, próbowałem tej ścieżki i kilku innych. Komentarze są ograniczone do 600 znaków, więc nie jestem pewien, jak pokazać ci mój plik ini. include_path = ".: / usr / bin / php"
— user185305

/ usr / bin to miejsce, w którym znajdują się pliki wykonywalne, a nie biblioteki.
— Alister Bulman

2

Znalazłem to!

Wygląda na to, że PEAR zainstalował PHPUnit w / usr / share / pear. Nie wiem dlaczego, ale tak właśnie jest. To musi być (mt) rzecz.

W każdym razie wszystko gotowe. Dzięki za pomoc.


2

Dzieje się tak również w przypadku nieaktualnej lub niekompletnej instalacji PHPUnit. Pamiętaj, że po skonfigurowaniu PEAR, musisz dodać kanał PHPUnit.de , aby uzyskać aktualny pakiet.


2

W moim przypadku rozwiązałem to, dodając /usr/share/php/PEARdoinclude_path .

Używam Ubuntu 10.04.2.


1

Jeśli masz problemy z dostępem do komponentów, wypróbuj inny sposób.

  1. Zainstaluj gruszkę

    sudo apt-get install php-pear
    
  2. Zainstaluj phpunitza pomocą gruszki.

    pear config-set auto_discover 1
    pear install pear.phpunit.de/PHPUnit
    
  3. Zainstaluj phpunit/ Selenium, ale najpierw musisz zainstalować curlmoduł

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

0

Miałem ten sam problem. Netbeans zgłosił, że wersja phpunita była zbyt stara (a nie była). Uruchomienie skryptu phpunit bezpośrednio pokazało powyższe komunikaty.

Rozwiązałem to dodając:

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

Do /etc/php5/cli/php.ini

Proszę PAMIĘTAĆ, że plik php.ini jest plikiem dla php CLI (polecenie), a nie php.ini używanym przez apache!


0

Mój pierwotny problem polegał na tym, że nie mogłem uzyskać wersji php z wiersza poleceń (yum install php lub yum install php-cli), aby zaktualizować do => php5.2.7 Utknąłem w wersji 5.1

Skompilowałem już php 5.3.3 do użytku z Apache. Ustawiłem więc dowiązanie symboliczne z / usr / bin / php (domyślne w wierszu poleceń) do mojej skompilowanej wersji w / var / php5 / bin / php, aby uzyskać raportowanie php w wierszu poleceń 5.3.3

Następnie ponownie wykonałem kroki instalacji gruszki dla phpunita

Ale nadal potrzebował całego kodu, gdy uruchomiłem phpunit.

Poszukałem więc pokrycia kodu w / var / php5 / lib / php / PHP / CodeCoverage i dodałem to do ścieżki dołączania w php.ini include_path = ".: / Var / php5 / lib / php /"

Upewnij się, że dodałeś go do ścieżki dołączania bez / PHP, ponieważ phpunit zaczyna się w PHP / (czapki informacyjne) szukając pokrycia kodu Nie można otworzyć wymaganego „PHP / CodeCoverage / Filter.php”


0

Miałem ten problem. Pracowałem nad witryną zend Framework. Wreszcie udaje mi się go rozwiązać, usuwając instalację zend i usuwając / komentując ścieżkę dołączania w plikach php.ini kąpieli w apache i cli. Aby stworzyć witrynę z zendem, nie musimy mieć zainstalowanego zend. W instancji możemy skopiować bibliotekę do naszego folderu serwisu




0

Ubuntu 12.04:

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

0

Miałem ten sam problem z Windows 8 Podobnie jak w przypadku pierwszej odpowiedzi, musiałem uruchomić wiersz poleceń, jednak upewnij się, że uruchamiam cmd.exe jako administrator . Potem dwie komendy

pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.