文件displaypage.php看起来是这样的:PHP文件给exec()的另一个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
没有写入数组?
我知道它会工作,只要我不想检索输出。在filetoexecute.php的代码将正确执行(比方说,我把它写的东西到一个数据库)如果displaypage.php行看起来是这样的:
exec("php filetoexecute.php >/dev/null");
这当然是因为输出被倾倒到无所事事。
我这样做是因为我需要filetoexecute.php在不同的php会话cookie下操作,而不是调用它的文件。我不能只交换由filetoexecute.php处理的几行代码。我需要知道filetoexecute.php的结果是什么,这就是为什么我需要它产生的数据。
此外,passthru()
似乎并没有帮助我。
最后,我还没有想过使用exec()或passthru(),想要完成我想要的东西的提示将不胜感激!
简单地使用文件或流与父进程交谈可能更简单(对于您的情况,使用'displaypage.php')。 – uzyn 2012-07-24 03:25:39
@Patrick我运行您的程序在我的本地主机上,并正确输出“Array([0] => test data)”作为结果...带有error_reporting(E_ALL); – swapnesh 2012-07-24 03:30:08
@uzyn你可以扩展一下吗?我不确定你的意思是什么...... – Patrick 2012-07-24 03:32:09