0

文件 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 会话 cookie 下运行。我不能只为 filetoexecute.php 处理的几行代码切换会话。我需要知道 filetoexecute.php 的结果是什么,这就是我需要它产生的数据的原因。

此外,passthru()似乎根本没有帮助我。

最后,我不同意使用 exec() 或 passthru() 的想法,将不胜感激有关可以完成我想要的事情的提示!

4

1 回答 1

0

经过大量实验,我发现了一些可行的方法。我还不明白它,因为我不熟悉 CLI,并且真的没有太多用处,但这里是有效的:

显示页面.php

<?php

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

echo $returnedData;

?>

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

于 2012-07-25T18:39:16.610 回答