如何在启动时将命令传递到php交互模式


How do I pass commands to php interactive mode on startup?

我想使用php交互模式作为Zend应用程序的命令行界面。我目前可以通过执行php -a来实现这一点,然后在交互模式启动后执行以下php代码:

$_SERVER[DOCUMENT_ROOT]='<some_path>';
require_once('index.php');

执行完这两行之后,我就可以调用zend应用程序中的控制器/服务等并查看输出了。

我想要的是一种将所有三个命令包含在一个命令/脚本中的方法,这样就可以启动交互模式,执行两行php代码,并且在加载zend应用程序时留下一个交互式php提示。即,我可以键入CCD_ 2,并且在其末尾我具有交互式提示。

我尝试过在我的两个php命令中使用管道,以及将文件重定向到php -a命令中,但都不起作用。

这可能吗?

编辑

我查看了有问题的解决方案,我的问题可能与(此处)重复。然而,在做那个问题中给出的例子时,我没有得到相同的结果。该问题显示了一个简单的示例,其中文件中的$x设置为TRUE,该文件被预先设置为交互模式,然后在交互模式中对$x进行评估,以显示其值为TRUE

然而,在我的环境中,我得到了一个不同的结果:

# cat foo.php
$x = true;
# php -d auto_prepend_file=foo.php -a
Interactive mode enabled
$x = true;
php >
php > var_dump($x);
NULL

我想这可能只是环境差异,但这种差异会是什么?

问题中的示例有点偏离。原因(无论如何,在我的环境中)是foo.php在文件开头没有<?php标记。当我把它加在$x = true;上方的一行上时,一切都如预期的那样。

foo.php最终看起来像:

<?php
$x = true;