Heim  >  Artikel  >  Backend-Entwicklung  >  Gründe und Lösungen für PHPUnit-Installationsfehler

Gründe und Lösungen für PHPUnit-Installationsfehler

WBOY
WBOYOriginal
2016-08-08 09:29:501312Durchsuche

Offizielle Richtlinien

Leider ist phpunit noch nicht im ArchLinux-Repository.

Verwenden Sie also die Download- und Installationsmethode. Befolgen Sie die offiziellen Richtlinien:

<code>wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar
sudo mv phpunit.phar /usr/local/bin/phpunit
phpunit --version</code>

Das Ergebnis ist der folgende Fehler:

<code>PHP Warning:  realpath(): open_basedir restriction in effect. File(/usr/local/bin/phpunit) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/) in /usr/local/bin/phpunit on line 3
PHP Fatal error:  Class 'Phar' not found in /usr/local/bin/phpunit on line 714</code>

Phar-Erweiterung aktivieren

Lösen Sie es zuerstFatal error: Class 'Phar' not found.

<code>ls /usr/lib/php/modules</code>

phar.so gefunden, was bedeutet, dass die Phar-Erweiterung installiert wurde. Ist die Erweiterung also nicht aktiviert?
Öffnen Sie /etc/php/php.ini und suchen Sie nach phar, und tatsächlich habe ich festgestellt, dass extension=phar.so auskommentiert war. Entfernen Sie das ; vor der Zeile, speichern Sie php.ini und führen Sie phpunit --version erneut aus.

<code>PHP Warning:  realpath(): open_basedir restriction in effect. File(/usr/local/bin/phpunit) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/) in /usr/local/bin/phpunit on line 3
PHP Warning:  Phar::mapPhar(): open_basedir restriction in effect. File(/usr/local/bin/phpunit) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/) in /usr/local/bin/phpunit on line 714</code>

Fatal errorGelöst, aber die Warnung ist immer noch da und phpunit läuft nicht richtig.

PHP-Schutzmechanismus für den Dateizugriff

Google und hier eine Erklärung gefunden: http://www.templatemonster.com/help/open_basedir-restriction-in-effect-filex-is-not-within-the-allowed-paths-y.html

PHP open_basedir-Schutzoptimierung ist eine Sicherheitsmaßnahme im abgesicherten Modus, die Benutzer daran hindert, Dateien oder Skripte, die sich außerhalb ihres Home-Verzeichnisses befinden, mit PHP zu öffnen, es sei denn, der Ordner hat die PHP-open_basedir-Einstellung ausdrücklich ausgeschlossen und stellt sicher, dass alle Dateivorgänge ausgeführt werden auf Dateien in einem bestimmten Verzeichnis beschränkt sein und so verhindern, dass PHP-Skripte für einen bestimmten Benutzer auf Dateien im Konto eines nicht autorisierten Benutzers zugreifen. Wenn ein Skript versucht, eine Datei beispielsweise mit fopen() oder gzopen() zu öffnen, wird der Speicherort der Datei wird überprüft. Wenn die Datei außerhalb des angegebenen oder zulässigen Verzeichnisbaums liegt, weigert sich PHP, sie zu öffnen, und es können folgende Fehler auftreten: ...

bedeutet: open_basedir in php.ini ist die Einstellung von PHP, um einen sicheren Dateizugriff zu gewährleisten. Wenn diese Option zugewiesen ist, werden alle Dateivorgänge auf bestimmte Verzeichnisse beschränkt, wodurch verhindert wird, dass ein Benutzer ein PHP-Skript verwendet, um nicht autorisierte Inhalte zu lesen. Wenn Sie eine Datei über fopen oder gzopen öffnen möchten und sich die Datei in einem Verzeichnis befindet, das nicht mehr zulässig ist, wird die obige Warnmeldung angezeigt.

Aus der Warnmeldung geht hervor, dass zu den zugänglichen Verzeichnissen /srv/http/:/home/:/tmp/:/usr/share/pear/ gehört. Zufälligerweise befindet sich ~/bin in der PATH-Variablen und ist auch ein Verzeichnis, das vom PHP-Skript gelesen werden kann, also

<code>mv /usr/local/bin/phpunit ~/bin</code>

Führen Sie phpunit --version erneut aus, um das richtige Ergebnis zu erhalten:

<code>PHPUnit 4.5.0 by Sebastian Bergmann and contributors.</code>

phpunit erfolgreich installiert!

Das Obige stellt die Ursachen und Lösungen von PHPUnit-Installationsfehlern vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP-einfach verknüpfte ListeNächster Artikel:PHP-einfach verknüpfte Liste