[英]PHP cURL cannot connect to IIS on local machine
我有一個PHP腳本試圖使用cURL協議與位於我辦公室中的本地計算機上的IIS安裝上的其他PHP腳本連接,但無法這樣做。
本地配置:我已打開防火牆上的端口8789,已將路由器正確重定向到運行IIS的計算機的IP,並將IIS的默認端口設置為8789。如果嘗試連接到腳本( 93.144.xxx.xxx:8987/curl_response.php)通過瀏覽器得到最終的輸出,因此此設置正常運行。
當我嘗試在遠程Web服務器上運行PHP腳本時,盡管它給出了我的cUrl錯誤(#7):無法連接到主機或cUrl錯誤(#28):connect()超時! (我正在嘗試其他Web服務器)
我的PHP腳本的curl部分如下:
$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發送的特定標頭?
謝謝。
您有錯字:
curl_setopt ($curl, CURLOPT_URL, $rurl);
應該:
curl_setopt ($curl, CURLOPT_URL, $url);
這是一個有效的 curl請求的示例:
<?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;
?>
就像您一樣,除了三件事:
使用--verbose從命令行運行cURL以查看更多詳細信息。
並檢查ISS是否啟用了cURL:
extension=php_curl.dll
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.