我正在尝试在远程服务器上运行脚本,并将该脚本的结果返回给调用脚本。变量将发送到远程脚本,并基于此变量,远程脚本用于检索远程服务器上的文件名列表,并将这些文件名作为数组返回。但是,在包含的文件中使用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。
我已经查看了有关此主题的其他一些相关问题,但似乎没有任何东西可以很好地描述我的问题。任何帮助将不胜感激,因为我已经花了几个小时仔细研究了这个问题,但是没有取得任何进展。
尝试使用file_get_contents()代替include。
这会将文件写入变量(使脚本可以远程执行),但不会在本地运行响应。
另外,如果您可以使用cURL,它会更安全,也可能更快。
一个用于远程file_get_contents()的小片段;
function curl_get_contents($url){
$c = curl_init($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($c);
if (curl_getinfo($c, CURLINFO_HTTP_CODE) > 400) $res = false;
curl_close($c);
return $res;
}
作为解释
if (!strpos(200, get_headers($url)[0])) return false;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句