如何在启动时将命令传递给 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;
我想使用 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;