2012-10-08 37 views
1

我想从脚本返回每个回声“完成”或“错误”的返回值。首先,我可以使用php函数file_get_contents来处理这个问题,但它返回我的整个脚本,不仅仅是我在脚本中打印的东西。然后,我相信在cURL方法,但它不能得到它的工作....在PHP中使用返回值调用php脚本

这就是所谓的脚本:

<?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."|"; 

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

+1

不应该该网址是一个实际的网址?像'file:/// caller.php' –

+0

只是试过了,它不能和'file://'url一起工作,这会在不执行php代码的情况下回应完整的文件内容。 –

回答

4

如果你想捕捉的包括脚本的呼应值,你可以使用输出缓冲:

<?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 
?> 
+0

没有脚本没有包括在内,我需要给它一些get/post变量。包括只在第一个脚本中看到我是否得到了整个脚本返回... – user1010775

+0

即时在同一台服务器上! – user1010775

+0

@ user1010775如果脚本位于同一台服务器上,则所有“GET”和“POST”变量在任何包含的脚本中都可用。 – jeroen

0

据我所知,你需要一个有效的HTTP(或其他协议)有一个完整的URL到卷曲的脚本工作 例如http://localhost/caller.php

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

+0

我的http地址,我可以在浏览器中调用,或文件://完整路径不工作! – user1010775

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; 

还是拿吉荣的答案,它是调用同一台服务器上的最佳途径!如果您需要在POST/GET中传递参数,请告诉'caller.php'将这些值保存到全局变量中,然后告诉'to-be-called.php'从这些全局变量中获取。

0

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

0

您可以使用php cgi来运行脚本并获取内容。使用shell_exec