2

次のような PHP インタラクティブ シェルを実行するツールがあります。

$descriptorSpec = array(
    0 => STDIN,
    1 => STDOUT,
    2 => STDERR
);

$prependFile = __DIR__ . '/../../../../../res/dev/console_auto_prepend.php';
$exec = 'php -a -d auto_prepend_file=' . escapeshellarg($prependFile);

$pipes = array();
proc_open($exec, $descriptorSpec, $pipes);

残念ながら、このトリックはauto_prepend_filePHP 5.3 でのオートロードで問題を引き起こします。インタラクティブシェル内にファイルを含めると、すべてがうまく機能することがわかりました。

$ php -a
インタラクティブシェル

php > include "myproject/res/dev/console_auto_prepend.php";
オートローダーが初期化されました。

私たちがやりたいことは次のとおりです。

  • proc_open 経由で php インタラクティブ シェルを実行する
  • インクルード行を対話型シェルに送信します
  • コントロールをユーザー入力に渡す

これを行う方法はありますか?

4

2 に答える 2