【发布时间】:2017-05-24 09:51:40
【问题描述】:
我调用CURL 代码来调用 URL(URL 发送电子邮件)。
当我从浏览器调用 URL 时,它可以工作,但是当我从 curl php 代码执行它时,它不起作用。
另外,完全相同的 curl 代码适用于我的 https SSL 生产服务器,但不适用于我的 http 开发服务器。
我在开发 http 服务器上遇到的错误是“无法连接到主机”。
这是代码:
$ch = curl_init();
$requestedUrl = http://XXX.XXX.XX.XX/myproject/index.php?entryPoint=viewReport&record=.....etc..
curl_setopt($ch, CURLOPT_URL, $requestedUrl);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
if ($data === FALSE) {
$GLOBALS['log']->fatal("error = " . print_r(curL_error($ch),true));
}
curl_close($ch);
我阅读了有关此问题的所有帖子。 我不知道我是否在代理后面,如果我在代理后面,我也不知道如何获取代理的 ip。
我已尝试添加curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
尝试添加:
curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
curl_setopt($ch, CURLOPT_PROXY, "http://XXX.XXX.XX.XX"); //your proxy url
curl_setopt($ch, CURLOPT_PROXYPORT, "80"); // your proxy port number
尝试在防火墙中打开端口 1080(对任何 http 地址开放)。
我没有想法,所以请帮助我:)
【问题讨论】:
-
你能从 cli 获取那个 url (index.php) 吗?
-
谢谢 Denis,我从开发 linux 服务器控制台调用了 wget。我打电话给“wget XX.XX.XX.XX/myproject/index.php”(如果你的意思是我应该这样做)。它说“连接到 XX.XXX.XX.XX:80...失败:连接超时”。这是什么意思?
-
这意味着你的服务器没有“看到”对方,这属于系统管理域,我不知道如何解决它。您的开发服务器应该可以访问互联网,但现在似乎没有...
-
谢谢,但是防火墙对 http 请求是开放的。我可以从我的浏览器(它是一个 CRM 系统)浏览服务器中的项目,并且没有两台服务器只有一台。我从服务器调用 wget 到服务器 ip 本身(相同的 ip),它没有连接......