文件displaypage.php如下所示:
<?php
exec("php filetoexecute.php 2>&1",$output);
print_r($output);
?>文件filetoexecute.php如下所示:
<?php
echo "test data";
?>我的$output数组中唯一的东西是PHP_FCGI_CHILDREN is not valid,我在网上得不到太多的帮助。我知道为什么它在那里,我将STDERR重定向到STDOUT,但是为什么文本test data没有写到数组中呢?
我知道,只要我不想检索输出,它就会工作。如果displaypage.php中的代码看起来像这样,那么filetoexecute.php中的代码将正确执行(假设我让它向数据库中写入一些内容):
exec("php filetoexecute.php >/dev/null");当然,这是因为输出被转储为空。
我这样做是因为我需要filetoexecute.php在不同的php session cookie下运行,而不是在调用它的文件下操作。我不能仅仅为filetoexecute.php处理的几行代码切换会话。我需要知道filetoexecute.php的结果是什么,这就是为什么我需要它产生的数据。
而且,passthru()似乎对我一点帮助都没有。
最后,我不喜欢使用exec()或passthru()的想法,如果能实现我想要的东西,我将非常感谢!
发布于 2012-07-26 02:39:17
经过多次实验,我发现了一些有用的东西。我还不理解它,因为我不熟悉CLI,而且真的没有太多用处,但以下是工作原理:
displaypage.php
<?php
$returnedData = exec("php filetoexecute.php &");
echo $returnedData;
?>不管是什么原因,末尾的“与”号是exec()返回被调用页面的所有输出的原因。我不知道这是否是实现这一目标的最好方法,但它现在对我很有效。如果你有什么建议可以做得更好,我很想知道。
https://stackoverflow.com/questions/11623672
复制相似问题