phpunit require_once () Fehler

79

Ich habe vor kurzem phpunit über das Birnen-Installationsprogramm auf meinem Server installiert.

Wenn ich einen Test durchführe, wird folgende Fehlermeldung angezeigt:

PHP-Warnung: require_once (PHPUnit / Util / Filter.php): Stream konnte nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis in / usr / bin / phpunit in Zeile 44

Schwerwiegender PHP-Fehler: require_once (): Fehler beim Öffnen erforderlich 'PHPUnit / Util / Filter.php' (include_path = '.: / Usr / bin / php') in / usr / bin / phpunit in Zeile 44

Nach einigen Suchvorgängen habe ich versucht, einige Änderungen am include_path in meiner php.ini-Datei auf dem Server vorzunehmen. Aber das hat nichts getan.

Irgendeine Idee, was dies verursachen könnte?

user185305
quelle

Antworten:

123

UPDATE: Ab November 2013 und Ubuntu 12.04 sollten diese beiden Befehle ausreichen:

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

Das Folgende ist eine ältere Antwort. Es ist ein bekanntes Problem, obwohl fast anderthalb Jahre vergangen waren. Lesen Sie hier darüber

Die Codeabdeckung muss installiert sein, damit phpunit ordnungsgemäß funktioniert

Was Sie tun müssen, wird hier behandelt:

Installation der Codeabdeckung über PEAR

Grundsätzlich müssen Sie eingeben (mit sudo, wenn Sie keine Berechtigungen haben, vorausgesetzt, dass phpunit bereits installiert ist):

pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear install phpunit/PHP_CodeCoverage
arunas_t
quelle
Beim ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_php" ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_data"letzten Schritt wird ein Fehler angezeigt.
Eray
6
Die richtige Lösung für mich war der erste Link, den Sie angegeben haben: bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544/comments/…
EnigmaCurry
2
Ich hatte die include_path in festlegen beiden php.ini - Dateien /etc/php5/apache2/php.ini, /etc/php5/cli/php.iniund musste es machen sind Eltern und Unterverzeichnisse:include_path = ".:/usr/share/php:/usr/share/php/PEAR"
Kochfelder
7
Unter Ubuntu 12.04 musste ich auch eintreten sudo pear channel-discover pear.symfony.comund es gelang sudo pear install --alldeps phpunit/PHPUnit
mir
2
Beachten! 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. ... was diese Antwort ungültig macht.
Madbreaks
34

Ich hatte dieses Problem unter OS X. Es wurde mit den folgenden Befehlen behoben, die die Neuinstallation aller PHP-Abhängigkeiten erzwangen, einschließlich einiger Pakete von anderen Kanälen, die noch nicht konfiguriert waren:

sudo pear channel-discover pear.symfony-project.com
sudo pear channel-discover components.ez.no
sudo pear install --alldeps phpunit/PHPUnit
Steven Green
quelle
Dies ist die einzige Lösung, die in Ubuntu 11.10 für mich funktioniert hat.
Mpen
4
Nvm. Es wurde gut installiert, aber wenn ich versuche, irgendwelche tatsächlichen Tests durchzuführen, bekomme ichPHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/share/php/PHPUnit/Framework.php on line 46
mpen
2
Für mich habe ich dies getan und dann einen Fehler erhalten, der meiner Meinung nach durch stackoverflow.com/a/9186866/470749 Ubuntu 12.04
Ryan
1
Hat bei mir nicht funktioniert - ich muss in channel-discover pear.phpunit.deder Lage sein, phpunit / phpunit zu installieren, und dann erhalte ich den require_once(PHPUnit/Util/Filter.php)Fehler ... die Datei befindet sich nirgends auf meinem Dateisystem.
Ashgromnies
Beachten! 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. ... was diese Antwort ungültig macht.
Madbreaks
13

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

und speziell dieser Kommentar für Ubuntu 11.04 und möglicherweise auch für einige andere

Obwohl ich diese Schritte wie oben empfohlen ausgeführt habe, habe ich sie nicht zum Laufen gebracht, aber nachdem ich Pear von 1.9.1 auf 1.9.2 aktualisiert habe, funktioniert es perfekt

speshu @ speshu-Laptop: ~ $ Sudo Pear Upgrade Birne

   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
quelle
Ich habe dies getan, sobald ich PHPUnit installiert habe und immer noch den Fehler erhalten habe, aber die Antwort von @StevenGreen hat mir geholfen =) aber es ist in Ordnung, dass Sie darauf hinweisen =)
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
quelle
2

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

Sind Sie sicher, dass Sie es dem include_path hinzugefügt haben?

Es könnte auch hilfreich sein, wenn wir Ihre INI-Datei und das darin enthaltene Include_path-Snippet sehen ...

meder omuraliev
quelle
Ja, ich habe diesen und mehrere andere Wege ausprobiert. Die Kommentare hier sind auf 600 Zeichen begrenzt, daher bin ich mir nicht sicher, wie ich Ihnen meine INI-Datei zeigen würde. include_path = ".: / usr / bin / php"
user185305
In / usr / bin befinden sich ausführbare Dateien, keine Bibliotheken.
Alister Bulman
2

Ich habe es gefunden!

Sieht aus wie PEAR PHPUnit in / usr / share / pear installiert. Ich weiß nicht warum, aber dort ist es. Muss eine (mt) Sache sein.

Wie auch immer, ich bin fertig. Danke für die Hilfe.

user185305
quelle
2

Dies ist auch der Fall, wenn Sie eine veraltete oder unvollständige PHPUnit-Installation haben. Bitte beachten Sie, dass Sie nach dem Einrichten von PEAR den Kanal PHPUnit.de hinzufügen müssen, um ein aktuelles Paket zu erhalten.

Josh Koenig
quelle
2

In meinem Fall habe ich es gelöst, indem ich /usr/share/php/PEARzum hinzugefügt habe include_path.

Ich benutze Ubuntu 10.04.2.

Marcelo
quelle
1

Wenn Sie Probleme beim Zugriff auf Komponenten haben, versuchen Sie es auf eine andere Weise.

  1. Birne installieren

    sudo apt-get install php-pear
    
  2. Installieren Sie phpunitmit Birne.

    pear config-set auto_discover 1
    pear install pear.phpunit.de/PHPUnit
    
  3. Install phpunit/ Selenium, aber zuerst müssen Sie das curlModul installieren

    sudo apt-get install php5-curl 
    pear install phpunit/PHPUnit_Selenium
    
denz
quelle
0

Ich hatte das gleiche Problem. Netbeans berichtete, dass die phpunit-Version zu alt war (was es nicht war). Wenn Sie das phpunit-Skript direkt ausführen, werden die obigen Meldungen angezeigt.

Ich habe es gelöst und hinzugefügt:

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

Zu /etc/php5/cli/php.ini

Bitte beachten Sie, dass die Datei php.ini die für die PHP-CLI (Befehl) ist und nicht die für Apache verwendete Datei php.ini!

Lepe
quelle
0

Mein ursprüngliches Problem war, dass ich die Befehlszeilenversion von PHP (yum install php oder yum install php-cli) nicht zum Upgrade auf => php5.2.7 bekommen konnte. Ich steckte in der 5.1-Version fest

Ich hatte bereits PHP 5.3.3 für die Verwendung mit Apache kompiliert. Daher habe ich eine symbolische Verknüpfung von / usr / bin / php (Standard der Befehlszeile) zu meiner kompilierten Version in / var / php5 / bin / php eingerichtet, um die Befehlszeilen-PHP-Berichterstattung 5.3.3 zu erhalten

Dann folgte ich den Birneninstallationsschritten für phpunit

Aber es brauchte immer noch die Code-Abdeckung, als ich phpunit ausführte.

Also habe ich die Codeabdeckung unter / var / php5 / lib / php / PHP / CodeCoverage gesucht und diese dem Include-Pfad in der php.ini hinzugefügt. Include_path = ".: / Var / php5 / lib / php /"

Stellen Sie sicher, dass Sie es dem Include-Pfad ohne / PHP hinzufügen, da phpunit bei PHP / (Hinweiskappen) beginnt und nach Code Coverage sucht. Fehlgeschlagenes Öffnen erforderlich 'PHP / CodeCoverage / Filter.php'


quelle
0

Ich hatte dieses Problem. Ich habe eine Zend-Framework-Site entwickelt. Schließlich schaffe ich es, es zu lösen, indem ich die zend-Installation entferne und den Include-Pfad in bath php.ini-Dateien in Apache und CLI entferne / kommentiere. Um eine Site mit zend zu entwickeln, muss zend nicht installiert sein. Sofern können wir die Bibliothek in unseren Site-Ordner kopieren

Ruwantha
quelle
0

Für mich hat es geholfen, Tests in mehrere Chargen aufzuteilen.

amitchhajer
quelle
0

Ubuntu 12.04:

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

Ich hatte das gleiche Problem mit Windows 8 Ähnlich wie bei der obersten Antwort musste ich die Befehlszeile starten, aber stellen Sie sicher, dass Sie cmd.exe als Administrator ausführen . Dann die beiden Befehle

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