2012-07-24 56 views
0

文件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(),想要完成我想要的东西的提示将不胜感激!

+0

简单地使用文件或流与父进程交谈可能更简单(对于您的情况,使用'displaypage.php')。 – uzyn 2012-07-24 03:25:39

+0

@Patrick我运行您的程序在我的本地主机上,并正确输出“Array([0] => test data)”作为结果...带有error_reporting(E_ALL); – swapnesh 2012-07-24 03:30:08

+0

@uzyn你可以扩展一下吗?我不确定你的意思是什么...... – Patrick 2012-07-24 03:32:09

回答

0

经过多次实验,我发现了一些可行的方法。我不明白,但因为我不熟悉的CLI,真的没有多大的用处是,但这里是什么在起作用:

displaypage.php

<?php 

$returnedData = exec("php filetoexecute.php &"); 

echo $returnedData; 

?> 

无论出于何种原因,最后的和号是导致exec()返回被调用页面输出的内容的原因。我不知道这是否是实现这一目标的最佳方式,但它现在对我有用。如果您有更好的做法,我很乐意知道。

相关问题