[解決済み] "ソケットを開くことができませんでした"
質問
私のサイトで発生する "Could not open socket" エラーを軽減するにはどうすればよいですか?
トラブルシューティングの結果、原因は キャプチャ(CAPTCHA (私が使っているのは reCAPTCHA ). reCAPTCHAを使用している2つのページでのみ、このエラーが表示されます。
新しいキーセットを生成していますが、うまくいくときといかないときがあります。例えば サファリ であったり、そうでなかったりしますが ファイアフォックス 私はうまくいったのですが、私のパートナーの一人はうまくいかず、その逆もまたしかりでした。
どうすればこの問題を解決できますか?私のサーバーがfsocketopenコマンドを実行するのに問題がある可能性がありますか?もしそうなら、どのようにそれを修正すればよいのでしょうか?
解決方法を教えてください。
<ブロッククオート私のサーバーがfsocketopenコマンドを実行するのに問題がある可能性がありますか?
その通りです。ただし、必ずしもあなたのサーバーに問題があるわけではありません。ただ、あなたのサーバーとrecaptchaサーバーの間のどこかで、ネットワーク通信に問題があり、ソケット接続を開くことができないことを意味します。
これは多くのことが考えられます。コードやサーバーの設定の問題(特にサーバーの設定が動的な場合)、サーバーの接続性の問題、サーバーがホストされているネットワーク設定の問題、サーバーとRecaptchaサーバー間のネットワーク設定の問題、ホストされている帯域の問題、サーバー側の設定の問題、などが考えられます。エラー報告のための追加引数を
fsockopen
をクリックして、意味のあるメッセージが表示されるかどうかを確認してください。また、全く異なるネットワーク上にある少なくとも2-3の異なるサーバーでセットアップを試してみるのもよいでしょう。
もうひとつは、このようなことを一般的にどのように管理するかということですが。
fsockopen
というのも、どんなに優れたネットワーク環境でも、通信が保証されることはないからです。ハードウェアの故障、事故の発生、ネットワーク管理者の指の太さ、リモートサーバーの混乱、世界規模の熱核戦争によるデータセンターの破壊など、まったく予想がつきません。だから、障害が発生したときのためにフォールバックケースを用意し、エンドユーザーが納得するエラーメッセージを表示するように、コードを書かなければならない(そして、設定を管理しなければならない)のです。
PHPの
set_error_handler
という関数を定義し、その関数が呼び出されるように設定します。
fsockopen
は失敗します。状況によっては、例外を発生させるために、このような使い方をするのが好きになった。
function throw_error_exception($number = 0, $str = '',$file = null,$line = null) {
throw new ErrorException($str, 0, $number, $file, $line);
}
set_error_handler('throw_error_exception',E_ALL);
この設定により
fsockopen
のような接続になります。
try {
fsockopen('remote.host.com',8080,$fso_errnum,$fso_errstr,30);
} catch(Exception $e) {
// here you can look at properties/methods of $e, and $fso_* values, and
// figure out what nice error messages you want to display for your users
}
関連
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】空の配列要素を削除する
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み】メッセージ。Trying to access array offset on value of type null [重複]配列のオフセットにアクセスしようとしています。
-
[解決済み】PDOException SQLSTATE[HY000] [2002] そのようなファイルまたはディレクトリがありません。
-
[解決済み】mysqli::query(): mysqli をフェッチできない
-
[解決済み】警告: file_get_contents(): https:// ラッパーがサーバー構成ですべて無効になっています。
-
[解決済み] XHTMLの自己完結型タグを除くオープンタグにマッチするRegEx
-
[解決済み] コンテナからはみ出したフレックスアイテムの上までスクロールできない
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] Fatal error: メンバ関数prepare()のNULLでの呼び出し
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】 PHP 未定義関数の呼び出し
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み】pdo - 非オブジェクトのメンバー関数prepare()への呼び出し【重複】。
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み] * vchiqインスタンスを開くのに失敗しました。