複数のサイト/サーバーで同じコードを実行しています。2 日前、サーバーの 1 つで、コードが http_code = 0 と「サーバーからの返信がありません」というエラー メッセージを返し始めました。
特定のサーバーがある日は機能し、次の日は機能しない理由について、誰かが光を当てることができますか? 問題を説明するチケットを ISP に送信しましたが、問題の原因を (まだ) 見つけられないようです。
問題は、これが機能しないようにするためにサーバーで何が変更されるか、または変更される可能性があるかということです。
興味深いのは、私が参照している URL が、エラーを返すサーバーに影響を与えないことです。存在しないものを指すように URL を変更すると、同じエラーが返されます。そのため、合計で CURL POST 参照がサーバーによって拒否されているようです。私は現在、これらの問題のあるサイトにヒットしている他の CURL スクリプトを持っていますが、それらはまだ機能していますが、それらには POST オプションがありません。
この問題は間違いなくこのサーバー上の CURL POST リクエストに関連しており、すぐに拒否されています。
問題のサーバーには15以上の個別のアカウントがあり、それらのすべてが同じ結果を返すため、この問題が発生した時点ですべてのサイトに大規模な変更を加えていないことがわかっているため、何も変更していないと思います. 私が他の場所でホストした他の 6 つのサイトのうち、すべてがまったく同じコードで正常に動作しています。
私が読んだ投稿からオプションへのさまざまな組み合わせ/変更を試みましたが、実際には何も違いはありませんでした。動作しているサイトは引き続き動作し、動作していないサイトはまだ動作しません.
function sendWSRequest($url, $xml) {
// $headers[] = 'Content-Type: application/xml; charset=utf-8';
$headers[] = 'Content-Type: text/xml; charset=utf-8';
$headers[] = 'Content-Length: ' . strlen($xml);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, true);
// curl_setopt($ch, CURLINFO_HEADER_OUT, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
$result = curl_exec($ch);
if($result===false) {
print 'error with curl - '.curl_error($ch).'<br />';
}
$info = curl_getinfo($ch);
curl_close($ch);
return $result;
}
どんな助けでも大歓迎です。
EDITさらなる調査に基づいて要約すると、スクリプトがエラーになると、サーバーアクセスログには何も記録されません。そのため、アクセスが許可/ログに記録される前に、POST オプションを含む CURL リクエストが拒否されているようです...
乾杯
グレッグ J