【发布时间】:2013-10-07 13:54:27
【问题描述】:
我正在尝试在远程服务器上运行脚本,并将该脚本的结果返回给调用脚本。一个变量被发送到远程脚本,并且基于该远程脚本旨在检索远程服务器上的文件名列表,并将这些文件名作为数组返回。但是,在包含的文件中使用 return 不会返回实际值,它只是中止脚本。除此之外,远程脚本运行没有问题,我可以让它 var_dump 为我的文件名列表,但这对我本地脚本没有多大好处。两台服务器都归我们所有(我们是我的公司)。
我已经尝试过类似这样的简单操作,只是为了看看我是否可以获得返回值,但它不起作用:
本地脚本:
$test = include "http://remote_host_address/remote_script.php";
var_dump($test);
远程脚本:
$ret = "Hello World";
return $ret;
这会输出int(1)。远程脚本的代码本身运行良好,我已经测试过了,我作为 get 变量发送的变量也没有问题。唯一的问题是我没有从 remote_script 获得返回值。
另外,是的,allow_url_include 已为本地服务器启用。但是,远程服务器关闭;但这不应该有所作为:http://php.net/allow-url-include.
我查看了有关此主题的其他一些相关问题,但似乎没有什么能完全描述我的问题。任何帮助都将不胜感激,因为我已经花了几个小时来查看这个,但没有取得任何进展。
【问题讨论】:
-
这是一种不好的做法,应该避免。无论如何,@Glavić 解决方案可能会奏效。你是远程的,包括一个 php 文件。这意味着 http 包装器将要求远程服务器执行 php 文件,并且包含将尝试 之后 包含(意味着在本地执行)其输出。这里的输出在这里什么都没有,因为您的远程脚本没有回显任何内容。因此 include 返回“1”,这意味着它成功地包含了空输出。
-
@Kethryweryn - 好的做法与否,我不会争论。在任何情况下,我都尝试过让我的远程脚本 echo/var_dump 打印到屏幕上,但它不会影响 include 语句的返回值。此外,Glavic 的解决方案在技术上有效,因为它运行脚本,但随后脚本在本地运行;我希望它在远程服务器上运行以检索文件列表。如果有其他方法可以做到这一点,我愿意接受建议。
标签: php include return remote-server