PHP cURL无法连接到本地计算机上的IIS
我有一个PHP脚本,它尝试使用cURL协议与位于我办公室本地计算机上运行的IIS安装中的其他PHP脚本进行连接,但未能这样做。PHP cURL无法连接到本地计算机上的IIS
本地配置: 我已经打开了端口8789的防火墙上,我做了正确的路由器重定向到机器运行IIS的IP和我已经设置IIS的默认端口8789. 如果我尝试通过浏览器连接到脚本(93.144.xxx.xxx:8987/curl_response.php),我得到了输出结果,所以这个设置工作正常。
当我尝试,虽然它给我的任何cUrl作者:错误运行的远程Web服务器的PHP脚本(#7):无法连接到主机或cUrl作者错误(#28):connect()的超时!(我尝试不同的网络服务器)
我的PHP脚本的卷曲部分如下:
$url = 'http://93.144.xxx.xxx:8789/curl_response.php';
$verbose = fopen('php://temp', 'w+');
$curl = curl_init();
curl_setopt ($curl, CURLOPT_VERBOSE, true);
curl_setopt ($curl, CURLOPT_STDERR, $verbose);
curl_setopt ($curl, CURLOPT_URL, $rurl);
curl_setopt ($curl, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt ($curl, CURLOPT_HEADER, 0);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, false);
curl_setopt ($curl, CURLOPT_PORT , 8789);
$response = curl_exec($curl);
if ($response === FALSE) {
printf("cUrl error (#%d): %s<br>\n", curl_errno($curl),
htmlspecialchars(curl_error($curl)));
rewind($verbose);
$verboseLog = stream_get_contents($verbose);
echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog),"</pre>\n";
}else{
curl_close($curl);
// trim response (serialized array)
$response = trim($response);
// unserialize
$response = unserialize($response);
print_r($response);
}
我试过几个不同的CURLOPT_配置,我甚至已经使用DynDNS的主机,而不是试图的知识产权,但无济于事。
是否有一个IIS配置设置,以便它会接受不满意的cURL请求或是否有通过cURL发送的特定标头?
谢谢。
你有一个错字:
curl_setopt ($curl, CURLOPT_URL, $rurl);
应该是:
curl_setopt ($curl, CURLOPT_URL, $url);
这里的工作卷曲请求的示例:
<?php
$url = 'http://thepointless.com:80/';
$curl = curl_init();
curl_setopt ($curl, CURLOPT_VERBOSE, true);
curl_setopt ($curl, CURLOPT_URL, $url);
curl_setopt ($curl, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt ($curl, CURLOPT_HEADER, 0);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, false);
curl_setopt ($curl, CURLOPT_PORT , 80);
$response = curl_exec($curl);
print $response;
?>
这就像哟URS,除了三两件事:
- 它连接到端口80
- 它不设置STDERR
- 错字从命令行固定
输入错字,同时更改用于清晰目的的变量。 – user700119
@ user700119你有没有试过从一个已知的工作例子开始......也许复制/粘贴我的,看看是否有用? ...然后做出小小的变化并重新测试,看看哪些变化是突破性变化? – svidgen
运行卷曲用--verbose到查看更多详细信息。
,并检查是否ISS它与卷曲启用:
extension=php_curl.dll
只要你能增加超时检查..它提高到60和测试。同时删除最后一个卷曲选项CURLOPT_PORT –