0

ローカルサーバーをプロキシでテストしましたが、友達全員がブラウザにURLを読み込むことができますが、別のサーバーでcURLを使用しようとすると、接続に失敗します。

これがURLです。ブラウザと友達のインターネットの両方に読み込まれます。

http://pc.stephen3.com:8080/gameq.php

これが私が別のサーバーで使用しているコードです、それは他のすべてのURL(googleやyahooなど)を正常に取得します

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://pc.stephen3.com:8080/gameq.php");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$err = curl_error($ch);
$resp = curl_exec($ch);
echo $resp;
echo $err;

しかし、ホームサーバーのURLには何も返されません。

curl_error($ch);

(言った、今は何も言わない)「ホストに接続できませんでした」

それが何であるかについて何か考えはありますか?URLはどこでも機能しますが、cURLで機能します。コードはどこでも機能しますが、URLを使用します。

編集:外部サーバーのアウトバウンドトラフィックが通常のサーバーの80ではなくポート8080にあることが原因である可能性があり、ホスティング業者が他のポートでカールを許可するかどうかをテストする必要があります。

4

2 に答える 2

0

たぶん、URLからポート番号を削除してCURLOPT_PORTオプションを設定する必要があります。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://pc.stephen3.com/gameq.php"); // port removed
curl_setopt($ch, CURLOPT_PORT, 8080);  // that line added
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$err = curl_error($ch);
$resp = curl_exec($ch);
echo $resp;
echo $err;

curl_getinfo($ch)デバッグ情報の詳細については、関数を使用することもできます。

$report=curl_getinfo($ch);
echo "curl_getinfo returned: <br>".$report;
于 2013-03-03T21:12:16.840 に答える
0

私のホスト(iPower)がcURLをポート80に制限していることがわかりました:(

編集:ポート80のみが許可されていると言って、サポートが嘘をついていることがわかりました。実際、これらはポート80および990(SSL)を許可しますが、実際にSSLをオンにしなくてもポート990を使用できます。完璧に動作します。

于 2013-03-03T21:17:46.503 に答える