curl_exec($ ch)はもはや外部ドメインでは実行されません。なぜですか?

私はcURLを使用してサイトのコンテンツをスクラップしていましたが、最近私のページは curl_exec($ ch)に達したときにハングしています。いくつかのテストの後、私は自分自身のドメインから他のページをロードできることに気付きましたが、外部からロードしようとすると connect()タイムアウト!エラーが発生します。

ここで私が使っていたものの簡略版があります:

<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,'http://www.google.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);

$contents = curl_exec ($ch);
curl_close ($ch);

echo $contents;
?>

私の phpinfo()からホストに関するいくつかの情報があります:

PHP Version 5.3.1
cURL support       enabled
cURL Information    7.19.7
Host    i686-pc-linux-gnu 

私はSSHへのアクセス権を持っていないか、php.iniファイルを変更していません(しかし私はそれを読むことができます)。しかし、最近何かが外部ドメインへのcURLアクセスをブロックするように設定されているかどうかを知る方法はありますか?それとも私が逃したかもしれない何か他にありますか?

ありがとう、 デイブ

0
おそらくファイアウォール。これはあなた自身のパーソナルマシンですか?どこかホストされたものか?コードは上手く見えるので、あなたの箱の外に何かがありそうです。
追加された 著者 Marc B,
ポート80とGoogleのIPを使用していくつかのbarebones fsockopen()を試すことができました。それでもうまくいかなければ、カールに影響されただけではありません。
追加された 著者 Marc B,
おそらく、はい。何が妨害されているのかを理解するには、プロバイダに確認する必要があります。あなたの箱の上のファイアウォール、またはもっと上流の何かである可能性があります。
追加された 著者 Marc B,
それはどこかでホストされています。私はそれが最近ファイアウォールされているに違いないと思う。ファイアウォールによって実際にブロックされているかどうかをテストする方法はありますか?
追加された 著者 scrollup,
ありがとう。 警告:fsockopen()[function.fsockopen]:www.cnn.com:80に接続できません(接続がタイムアウトしました) ***/test2.php 2行目のにあります。つまり、ポート80へのすべての接続がブロックされていますか?接続タイムアウト(110)
追加された 著者 scrollup,
あなたに感謝します。私はこれをもっと研究します。
追加された 著者 scrollup,

2 答え

connect()timeout!というエラーが表示される理由はわかりませんが、次の行があります:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);

1に設定されていない場合、ページのコンテンツは $ contents に返されません。

0
追加された
あなたが正しいです、私は1でそれを持っていたし、それをテストするために0に変更しました。しかし興味深いことに、それは私が1か0で持っていたかどうか、友人のサーバーで働いた。
追加された 著者 scrollup,

私はそのような設定については気づいていませんが、それほど意味をなさないでしょう。
あなたがコンソールにアクセスしていないリモートWebサーバー上にいると言えば、あなたの活動がホストによって検出されたか、それが原因で問題が発生し、ファイアウォールをつけた可能性が高いと思います。
サイレントiptables DROPがこれを引き起こします。

Googleを掻き集めるときには、リクエストがいっぱいで、プロキシを使用する必要があります。自分のウェブサーバーでない場合は、ウェブサーバーのプライマリIPを悪用しないでください。これはTOS違反の可能性が高いため、Googleから禁止されると(たとえ起こりうるとしても)訴訟を起こす可能性があります。

Googleランクチェッカーを見てください。これは、CURLと適切な使い方を正確に実行するPHPスクリプトですIP管理。

私はあなたの側のファイアウォールよりもタイムアウトの原因となっているものは考えられません。

0
追加された
hostgatorやgodaddyのようなホスティングプロバイダにはデフォルトでファイアウォールが設置されています。たぶんあなたのホスティングプロバイダのライブサポートに連絡して(しばしば利用可能です)、ポート80への発信TCP接続を制限するファイアウォールがあるかどうか尋ねてください。(これは通常のHTTP要求用です)私の経験から、ファイアウォール。
追加された 著者 John,
早速お返事をいただきありがとうございます。サンプルコードでgoogle.comを使用していましたが、注意が必要です。それはファイアウォールの問題でなければならないようです。
追加された 著者 scrollup,
面白い、情報のおかげで。私は管理者に連絡することを試みることができると思います。
追加された 著者 scrollup,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com