我们有一个像这样执行 PHP 交互式 shell 的工具:
$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_file
会导致 PHP 5.3 上的自动加载问题。当我们将文件包含在交互式 shell 中时,我们发现一切都运行良好:
$ php -a 交互式外壳 php > 包括“myproject/res/dev/console_auto_prepend.php”; 自动加载器已初始化。
我们要做的是:
- 通过 proc_open 执行 php 交互式 shell
- 将包含行发送到交互式 shell
- 将控制权交给用户输入
有没有办法做到这一点?