Heim > Artikel > Backend-Entwicklung > Gründe und Lösungen für PHPUnit-Installationsfehler
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 error
Gelö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.