2

我正在尝试从每个回显“完成”或“错误”返回的脚本中获取返回值。首先,我认为我可以使用 php 函数file_get_contents来实现它,但它会返回我的整个脚本,而不仅仅是我在脚本中打印的内容。然后我相信了这个cURL方法,但它无法让它发挥作用......

调用的脚本:

<?php 
include("config.php");
print "complete";
?>

我卷曲的脚本:

$url="caller.php";
$ch = curl_init(); //initialize curl handle
curl_setopt($ch, CURLOPT_URL, $url); //set the url
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //return as a variable
$response = curl_exec($ch); //run the whole process and return the response
curl_close($ch); //close the curl handle

echo "test". $response."|";

为什么这不起作用?我怎样才能让它工作?!文件方法?

4

5 回答 5

5

如果要捕获包含脚本的回显值,可以使用输出缓冲:

<?php
ob_start();    // start output buffering
include("caller.php");
$returned_value = ob_get_contents();    // get contents from the buffer
ob_end_clean();    // stop output buffering
?>
于 2012-10-08T13:14:39.223 回答
0

据我所知,您需要一个有效的 http (或其他协议),其中包含脚本的完整 URL 才能使 curl 工作,例如http://localhost/caller.php

或者尝试jeroen的解决方案并获取脚本的输出。

于 2012-10-08T13:16:53.087 回答
0

在要调用的脚本中,确保“<?php”从第一行第一个字符开始。并且,删除“?>”。

<?php
//this is 'to-be-called.php'
include("config.php");
echo "complete";

现在这样称呼它:

<?php
//this is 'caller.php'
//should it come with full url?
$Url      = "http://localhost/path/to-be-called.php"; 
$Handle   = curl_init($Url);
$Response = curl_exec($Handle);
curl_close($Handle);

echo $Response;

或者采取 Jeroen 的回答,这是在同一服务器上调用的最佳方式!如果你需要在 POST/GET 中传入参数,告诉 'caller.php' 将这些值保存在全局变量中,然后告诉 'to-be-call.php' 从这些全局变量中获取。

于 2012-10-08T13:20:11.307 回答
0

以填充变量而不是回显文本的方式重写caller.php,理想情况下将其放在返回该变量的函数中。其他一切都是肮脏的黑客,容易出错并且是性能问题的根源。

于 2012-10-08T13:29:59.863 回答
0

您可以使用phpcgi 运行脚本并获取内容。采用shell_exec

于 2012-10-09T07:31:28.987 回答