phpunit インストール エラーの理由と解決策
残念ながら、phpunit はまだ ArchLinux ウェアハウスにありません。
そのため、ダウンロードしてインストールする方法を使用してください。公式ガイドラインに従います:
<code>wget https://phar.phpunit.de/phpunit.pharchmod +x phpunit.pharsudo mv phpunit.phar /usr/local/bin/phpunitphpunit --version</code>
結果は次のエラーになります:
<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 3PHP Fatal error: Class 'Phar' not found in /usr/local/bin/phpunit on line 714</code>
最初に解決してください Fatal error: Class 'Phar' not found
。
<code>ls /usr/lib/php/modules</code>
phar.so が見つかりました。これは、Phar 拡張機能がインストールされていることを意味します。つまり、拡張機能は有効になっていませんか? /etc/php/php.ini
を開いて phar
を検索すると、案の定、extension=phar.so
がコメントアウトされていることがわかりました。行の先頭にある ;
を削除し、php.ini を保存して、phpunit --version
を再度実行します。
<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 3PHP 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
解決しましたが、警告はまだ表示されており、phpunit が適切に実行されていません。
Google で説明を見つけました: http://www.templatemonster.com/help/open_basedir-restriction-in-effect-filex-is - not-within-the-allowed-paths-y.html
PHP open_basedir 保護調整は、ユーザーがホーム ディレクトリの外にあるファイルやスクリプトを PHP で開けないようにするセーフ モードのセキュリティ対策です。 PHP の open_basedir 設定が有効になっている場合、すべてのファイル操作が特定のディレクトリ内のファイルに限定されるため、スクリプトを開こうとしたときに、特定のユーザーの PHP スクリプトがそのファイルにアクセスすることがなくなります。たとえば、fopen() または gzopen() を使用してファイルを開くと、ファイルの場所がチェックされます。ファイルが指定または許可されたディレクトリ ツリーの外にある場合、PHP はそのファイルを開くことを拒否し、次のエラーが発生する可能性があります。 ..
の意味: php.ini の open_basedir
は、安全なファイル アクセスを確保するための PHP の設定です。このオプションが割り当てられている場合、すべてのファイル操作が特定のディレクトリに制限されるため、ユーザーは PHP スクリプトを使用して未承認のコンテンツを読み取ることができなくなります。 fopen
または gzopen
を通じてファイルを開こうとするときに、そのファイルが許可されなくなったディレクトリにある場合、上記の警告メッセージが表示されます。
警告メッセージから、アクセス可能なディレクトリに /srv/http/:/home/:/tmp/:/usr/share/pear/
が含まれていることがわかりました。たまたま ~/bin
が PATH 変数にあり、PHP スクリプトで読み取ることができるディレクトリでもあるためです。
<code>mv /usr/local/bin/phpunit ~/bin</code>
phpunit --version
を再度実行すると、正しい結果が得られます:
<code>PHPUnit 4.5.0 by Sebastian Bergmann and contributors.</code>
phpunit は正常にインストールされました!