如何在启动时将命令传递给 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 应用程序中调用 controllers/services/etc 并查看输出。

我想要的是一种将所有三个命令包含在一个 command/script 中的方法,这样交互模式就会启动,两行 php 代码就会被执行,我会加载我的 zend 应用程序时,会留下交互式 php 提示。也就是说,我可以输入 ./start_my_app 并在它的末尾出现交互式提示。

我已经尝试在我的两个 php 命令中使用管道以及将文件重定向到 php -a 命令,但都没有用。

这可能吗?

编辑

我查看了问题中给出的解决方案,我的问题可能与 (here) 重复。但是,在执行该问题中给出的示例时,我没有得到相同的结果。该问题显示了一个简单的示例,其中 $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;