我们有一个执行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 Interactive shell php > include "myproject/res/dev/console_auto_prepend.php"; Autoloader initialized.
我们想要做的是:
有没有办法做到这一点?
答案 0 :(得分:0)
未经考验的想法:
php -a
),stdout和stderr可以连接到系统管道php -a
)答案 1 :(得分:0)
该项目最终使用了自定义PHP shell(psysh
)