PHP cURL无法连接到本地计算机上的IIS

时间:2017-03-31 13:47:03

标签: php curl iis localhost

我有一个PHP脚本,尝试使用cURL协议连接位于我办公室本地计算机上运行的IIS安装上的其他PHP脚本,但未能这样做。

本地配置: 我在防火墙上打开了端口8789,我使路由器正确地重定向到运行IIS的机器的IP,并且我将IIS的默认端口设置为8789。 如果我尝试通过浏览器连接到脚本(93.144.xxx.xxx:8987/curl_response.php),我得到结果输出,以便此设置正常工作。

当我尝试在远程网络服务器上运行PHP脚本时虽然它给出了 cUrl错误(#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主机而不是IP,但无济于事。

是否有要配置的IIS配置,以便接受cURL请求,或者是否有通过cURL发送的特定标头?

感谢。

2 个答案:

答案 0 :(得分:0)

你有一个错字:

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;

?>

它与你的一样,除了三件事:

  • 它连接到端口80
  • 没有设置STDERR
  • 错字已修复

答案 1 :(得分:0)

使用--verbose从命令行运行cURL以查看更多详细信息。

并检查ISS是否启用了cURL:

extension=php_curl.dll