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?

user185305
źródło

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
arunas_t
źródło
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
Steven Green
źródło
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"
jspeshu
źródło
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
stanleyhlng
źródło
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 ...

meder omuraliev
źródło
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.

user185305
źródło
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.

Josh Koenig
źródło
2

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

Używam Ubuntu 10.04.2.

Marcelo
źródło
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
    
denz
źródło
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!

lepe
źródło
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”


źródło
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

Ruwantha
źródło
0

Pomogło mi podzielenie testu na kilka partii.

amitchhajer
źródło
0

Ubuntu 12.04:

sudo pear channel-discover pear.symfony.com
sudo pear install --alldeps phpunit/PHPUnit
RBalazs
źródło
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
Moak
źródło