cURL エラー 28(接続タイムアウト)の修正方法
cURL エラー 28 は、WordPress が外部 API やサーバーにアクセスする際の「接続タイムアウト」を示します。まずは一時的にセキュリティ系プラグインを無効化し、ブラウザキャッシュや DNS を確認してください。効果が無ければサーバー側のタイムアウトや cURL/OpenSSL のバージョン確認、ホスティング会社への問い合わせを行います。
重要: 変更を加える前に必ずサイトのバックアップを取ってください。
cURL エラー 28 とは?
cURL(Client URL)は、WordPress が外部サービスや API と通信するために使うライブラリです。API 呼び出しやリモート接続に一定時間以上かかると、接続はタイムアウトして「cURL エラー 28」と表示されます。
一行定義: cURL エラー 28 = リモート接続が指定時間内に完了しなかったためのタイムアウトエラー。
主な原因:
- WordPress のファイアウォールやセキュリティプラグインによるブロック
- DNS の問題やプラグインの不具合
- ホスティング側で設定された短いタイムアウト値
- サーバーの cURL / PHP / OpenSSL の古いバージョンや設定ミス
- SSL 証明書の誤設定やチェーン不備
事前チェック(必ず行う)
- サーバー側で cURL、PHP、OpenSSL が最新またはサポートされているバージョンか確認する。
- 別のブラウザやプライベートウィンドウで問題が再現するか確認する。
- サイトのフロントエンドと管理画面両方で同じエラーが出ているか確認する。
修正手順(ステップ別)
下の手順は簡単なものから、より技術的なものへ進みます。各手順の後で該当箇所を再度確認してください。
1. WordPress ファイアウォール(セキュリティプラグイン)を一時的に無効化
- WordPress 管理画面にログインします。

- 「プラグイン」メニューから該当のセキュリティ/ファイアウォールプラグインを探し、[無効化] をクリックします。
効果があれば、そのセキュリティプラグインが API 呼び出しをブロックしている可能性があります。プラグインの設定ログやブロックログを確認して、どのリクエストが遮断されたのか特定してください。
注意: プラグインを無効にする間は、本番サイトのセキュリティリスクが一時的に上がります。短時間で検証を終えてください。
2. すべてのプラグインを無効化して競合を確認
- 管理画面にログインします。
- 「プラグイン」→「インストール済みプラグイン」へ。
- すべてのプラグインを一括選択し、[無効化] を選びます。

プラグインを全て無効にしてエラーが消えるなら、プラグイン間の競合か特定プラグインの問題です。1つずつ有効化して原因を特定してください。
3. DNS サーバーの変更(クライアント側設定)
ときに、ローカルやネットワークの DNS が外部接続の遅延を起こします。Windows の場合の手順:
- Windows+R を押して「ファイル名を指定して実行」を開く。

- ncpa.cpl を入力してネットワーク接続を開く。
- アクティブな接続を右クリックして「プロパティ」。

- 「インターネット プロトコル バージョン 4(TCP/IPv4)」を選び「プロパティ」。

- 「次の DNS サーバーのアドレスを使う」を選択。
- 優先 DNS に 8.8.8.8、代替 DNS に 8.8.4.4(Google Public DNS)を入力。

- OK をクリックして設定を保存。
注: 他にも Cloudflare(1.1.1.1)などのパブリック DNS を試せます。DNS が原因だった場合、即座に接続が改善することがあります。
4. ブラウザのキャッシュをクリア
ブラウザ側のキャッシュやクッキーが古い状態を保持していると、管理画面のリクエストで問題が出ることがあります。Google Chrome の手順:
- 右上の「︙」→「設定」。

- 「プライバシーとセキュリティ」→「閲覧履歴データを削除」。

- 「期間」→「全期間」を選び、クッキーとキャッシュにチェックを入れて「データを削除」。

5. SSL 設定の確認
不正な SSL 設定やチェーン切れがあると、cURL が接続を拒否したり遅延したりします。無料の診断ツール(例: Qualys SSL Labs)で検査してください。
- Qualys SSL Labs の SSL Server Test にアクセス。

- サイトの URL を入力して「Submit」。
テスト結果で警告や不備が出た場合は、SSL 証明書を再発行または正しい中間証明書をインストールしてください。証明書ベンダーやホスティング会社に相談するのが安全です。
6. サーバーの制限と cURL バージョンを確認
管理画面の「サイトヘルス」→「情報」→「サーバー」で、タイムアウト値や cURL / OpenSSL / PHP のバージョンを確認します。 
チェックポイント:
- cURL のバージョンが古くないか
- PHP のバージョンが WordPress の推奨範囲か
- HTTP リクエストのデフォルトタイムアウトが短すぎないか
サーバー側の設定でタイムアウトが短く制限されている場合は、ホスティング会社に連絡してタイムアウト値の引き上げや接続ログの確認を依頼してください。
技術的な対処例(WordPress のコードでタイムアウトを増やす)
開発者向け: 一時的に WordPress の HTTP リクエストタイムアウトを増やすコード例。
// functions.php に追加(管理下のテーマまたはプラグインで行うこと)
add_filter('http_request_timeout', function($timeout) {
return 30; // 秒数。デフォルトより長めに設定
});
// wp_remote_get の場合は個別にタイムアウトを指定可能
$response = wp_remote_get('https://example.com/api', array('timeout' => 30));注意: タイムアウトを長くすることは応急処置に過ぎません。根本原因(遅い外部 API、DNS、サーバー設定)を特定してください。
代替アプローチ
- WP-CLI を使って HTTP リクエストを実行し、ブラウザに依存しない検証を行う。
- サイトをステージング環境へ複製して、同様の問題が発生するか切り分ける。
- プロキシや別サーバーからの接続を試し、ネットワーク経路の問題を特定する。
- トランジェント(短時間の障害)の可能性がある場合は、一定時間後に自動リトライするロジックを入れる(開発者向け)。
いつ効かないか(反例)
- 外部 API 側のレスポンスが恒常的に遅い場合: クライアント側のタイムアウト調整や DNS 変更では根本解決しない。
- サーバーが完全にダウンしている場合: タイムアウトだけでは接続不能は解決できない。
- セキュリティポリシーで特定 IP をブロックしている場合: ローカル設定やブラウザ操作では解決しない。
役割別チェックリスト(短縮版)
サイトオーナー:
- 直近の変更(プラグイン/テーマ/SSL更新)を一覧化する。
- 一時的にセキュリティプラグインを無効化して再試行する。
- ブラウザのキャッシュをクリアし、別端末で確認する。
開発者:
- wp_remote_get のタイムアウトやエラーハンドリングを確認する。
- サーバーログ(PHP-FPM・nginx/apache)でエラーとリクエスト遅延を調べる。
- cURL コマンドで外部 API への接続を手動で試す(例: curl -v URL)。
ホスティングサポート:
- サーバーの outbound 接続ポリシー(ファイアウォール/iptables)を確認する。
- cURL / OpenSSL / PHP のアップデート可否を確認する。
- サーバーのタイムアウト設定(mod_php / php-fpm / proxy_read_timeout など)を確認する。
管理者向けミニ SOP(手順書)
- 再現手順を整理し、発生時刻と影響範囲を記録する。
- セキュリティプラグインを一時無効化して再テスト。
- すべてのプラグインを無効化して単体検証。
- DNS と SSL の外部テストを実行(例: dig, Qualys)。
- サーバーのログと cURL バージョンを確認。
- ホスティングへログ添付で問い合わせる。
- 影響のある API エンドポイントが外部提供なら、提供者に遅延の有無を確認。
- 修正後は監視を強化し、SLA に基づく再発防止策を設計する。
簡易フローチャート(判断の流れ)
flowchart TD
A[エラー発生] --> B{管理画面で確認できるか}
B -- はい --> C[プラグイン無効化→再試行]
B -- いいえ --> D[サーバーログ確認]
C --> E{解決したか}
D --> E
E -- はい --> F[原因の特定と恒久対策]
E -- いいえ --> G[ホスティングへ連絡]
G --> H[調査・修正]1行用語集
- cURL: URLベースの通信を行うライブラリ。HTTP/S リクエストに利用。
- タイムアウト: 指定時間内に応答がない場合に接続を切る仕組み。
- DNS: ドメイン名を IP に変換する仕組み。
- SSL/TLS: 通信の暗号化と証明書の仕組み。
まとめ
cURL エラー 28 は接続タイムアウトを示し、原因はクライアント側(ブラウザ、DNS、プラグイン)かサーバー側(タイムアウト設定、cURL/PHP/SSL バージョン)に分かれます。まずはプラグインやキャッシュ等、変更が容易な箇所から切り分けましょう。根本原因が判明しない場合は、ホスティング会社や API 提供者とログを共有して調査を依頼してください。
重要: 本番環境での直接修正は慎重に行い、事前にバックアップを必ず取得してください。
ご質問や追加の状況(エラーメッセージ全文、サーバー情報など)があれば、コメントで具体的に教えてください。