0

I've recently installed PHPUnit on a Mac (10.8.3) (running PHP 5.4.7). When I attempt to a run a test phpunit testfile.php for example, I receive:

Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or
directory in /Users/myusername/pear/share/pear/PHPUnit/Autoload.php on line 64

Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' 
(include_path='.:') in /Users/myusername/pear/share/pear/PHPUnit/Autoload.php on line 64

The file, /Users/myusername/pear/share/pear/File/Iterator/Autoload.php exists.

php.ini correctly lists the pear directories in the include path:

.:/php/includes:/usr/local/apache/lib/php:/Users/myusername/pear/share/pear/

しかしvar_dump(get_include_path());、ファイルの中に入れると、空であるかのようPHPUnit/Autoload.phpに印刷されます。.:

php_ini_loaded_file代わりにの値をダンプすると、単純に が返されますfalse

1 つの php.ini のみを使用しphp -i |grep php\.iniて、php --ini使用/ロードされていることを示します。

Configuration File (php.ini) Path => /usr/local/apache/lib
Loaded Configuration File => /usr/local/apache/lib/php.ini

コマンドラインから実行した単純なtest.phpファイルからinclude_pathとloaded_ini_fileのvar_dumpsを繰り返し、正しい情報を出力しました。そのため、phpunit に関連する何かが、正しい/任意の php.ini をロードしていません。

デフォルトと異なる構成は使用していません。phpunit は、今日このマシンにインストールされたばかりです。

4

2 に答える 2

1

使用している php.ini ファイルが、cli php 用にロードされたものであることを確認してください。少なくとも Linux 上の PHP のインストールでは、2 つの php.ini ファイルがあり、1 つは /etc/php/cgi-php5.4/php.ini に、もう 1 つは /etc/php/cli-php5.4/ にあります。 php.ini. CGI のバージョンを変更しても、デフォルトでは CLI のバージョンには影響せず、インクルード パスが空になります。


チェックする別の場所は、phpunit.xml ファイルです。インクルード パスを指定するセクションがあります。 利用可能なオプションについては、こちらを参照してください。phpunit がパスをリセットする理由はわかりませんが、これは問題を解決する方法かもしれません。

于 2013-04-02T21:10:04.403 に答える
0

解決策は次のとおりです。

走った後

`pear config-get php_bin` -i | grep -E Configuration\ File\|include_path

Pear が php-cli とは異なる ini パスを使用していることが示されました。

Configuration File (php.ini) Path => /etc
Loaded Configuration File => (none)
include_path => .: => .:

Pear は、後でインストールしたカスタム バージョンではなく、元の / デフォルトの Mac OS コピーの PHP によって構成されていたことがわかりました。

長期的には最善ではないかもしれない簡単な修正は、見つけようとしていたiniファイルをシンボリックリンクすることでした:

sudo ln -s /usr/local/apache/lib/php.ini /etc/php.ini

その後、phpunit FakeTestコマンドが機能し、テストが実行されます。

最終的に、ロードしたバージョンのphpで動作するように、Pearを再インストール/再構成する必要があります。

于 2013-04-03T16:22:46.667 に答える