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发送的特定标头?

谢谢。

+0

只要你能增加超时检查..它提高到60和测试。同时删除最后一个卷曲选项CURLOPT_PORT –

你有一个错字:

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
  • 错字从命令行固定
+0

输入错字,同时更改用于清晰目的的变量。 – user700119

+0

@ user700119你有没有试过从一个已知的工作例子开始......也许复制/粘贴我的,看看是否有用? ...然后做出小小的变化并重新测试,看看哪些变化是突破性变化? – svidgen

运行卷曲用--verbose到查看更多详细信息。

,并检查是否ISS它与卷曲启用:

extension=php_curl.dll