0

MacPorts を使用して Mac OSX に PHP と PEAR をインストールし、PEAR を使用して PHPUnit をインストールしました。PHPUnit を実行しようとすると、次のエラー メッセージが表示されます。

$ phpunit StackTest.php
PHP Warning:  require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in /opt/local/lib/php/PHPUnit/Autoload.php on line 45

Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in /opt/local/lib/php/PHPUnit/Autoload.php on line 45
PHP Fatal error:  require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.:/php/includes:/usr/local/php5/lib/php:/opt/local/lib/php/pear') in /opt/local/lib/php/PHPUnit/Autoload.php on line 45

Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.:/php/includes:/usr/local/php5/lib/php:/opt/local/lib/php/pear') in /opt/local/lib/php/PHPUnit/Autoload.php on line 45

さて、ファイルFile/Iterator/Autoload.phpは私の中にないのでinclude_path、試しました

$ ls -l /opt/local/lib/php/File/Iterator/Autoload.php
-rw-r--r--  1 root  admin  2682 May 23 14:38 /opt/local/lib/php/File/Iterator/Autoload.php

$ phpunit --include-path /opt/local/lib/php StackTest.php
PHP Warning:  require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in /opt/local/lib/php/PHPUnit/Autoload.php on line 45

Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in /opt/local/lib/php/PHPUnit/Autoload.php on line 45
PHP Fatal error:  require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.:/php/includes:/usr/local/php5/lib/php:/opt/local/lib/php/pear') in /opt/local/lib/php/PHPUnit/Autoload.php on line 45

Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.:/php/includes:/usr/local/php5/lib/php:/opt/local/lib/php/pear') in /opt/local/lib/php/PHPUnit/Autoload.php on line 45

まだ機能しておらず、本来あるべき新しいパスが含まれていません。これについて私に何ができるか知っている人はいますか?(php.iniファイルは読み取り専用であり、PHP にかなり慣れていないため、理解できない方法でファイルを台無しにしたくないので、できればファイルを変更したくありません。) ありがとうございます。

4

3 に答える 3

3

--include-pathコマンドラインが機能しない理由についてはまだ答えがないので、私がしたことは次のとおりです。

$ which phpunit
/opt/local/bin/phpunit

$ sudo emacs /opt/local/bin/phpunit

計画はファイルを変更することなので、最初にどちらが初期化php.iniされているかを把握する必要がありました。誰かがこれを行うためのより良い方法を持っているなら、私はそれを聞いてうれしいです. コードの開始タグの直後に次の行を追加しました。php.iniphpunitphpunit<?php

echo php_ini_loaded_file();

ここで、 を実行するphpunitと、次の (ここでは切り捨てられた) 出力が得られました。

/opt/local/etc/php5/php.iniPHP Warning:  require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in /opt/local/lib/php/PHPUnit/Autoload.php on line 45...

それで:

$ sudo emacs /opt/local/etc/php5/php.ini

include_pathディレクティブを検索し:/opt/local/lib/php、最後に追加しました。だから今、phpunit動作しますが、セットアップに関して他に何かを壊したかどうかはわかりません.

于 2012-05-28T15:12:40.113 に答える
1

Windows のインストールでも同様の問題が発生しましたが、OSX でも同じ問題かどうかはわかりません。PEAR のインストールによって、プログラムの起動に使用されるバッチ ファイルに間違ったパスが作成されていることがわかりました。

標準インストールでは、インストールされたバッチ ファイルにエラーが発生します。pear.bat バッチ ファイルの最後のスクリプト行では、include_path を一重引用符で囲む必要があります ("include_path='%VARIABLE%'")。

私が行った変更は次のとおりです。

"%PHP_PEAR_PHP_BIN%" -C -d memory_limit="-1" -d safe_mode=0 -d register_argc_argv="On" -d auto_prepend_file="" -d auto_append_file="" -d variables_order=EGPCS -d open_basedir="" -d output_buffering=1 -d "include_path='%PHP_PEAR_INSTALL_DIR%'" -f "%PHP_PEAR_INSTALL_DIR%\pearcmd.php" -- %1 %2 %3 %4 %5 %6 %7 %8 %9

インストールで上記の問題と同様の問題があるかどうかはわかりません。

それができない場合、Windows 7 での PHPUnit のバッチ ファイルは次のとおりです。

if "%PHPBIN%" == "" set PHPBIN=C:\Program Files (x86)\PHP\php.exe
if not exist "%PHPBIN%" if "%PHP_PEAR_PHP_BIN%" neq "" goto USE_PEAR_PATH
GOTO RUN
:USE_PEAR_PATH
set PHPBIN=%PHP_PEAR_PHP_BIN%
:RUN
"%PHPBIN%" "C:\Program Files (x86)\PHP\phpunit" %*
于 2012-05-24T20:06:17.383 に答える