WordPressでcURL error 28が出る原因と対処法|サイトヘルスのタイムアウトを確認

WordPressでcURL error 28が出たときに通信・WAF・DNSを確認する手順を示すアイキャッチ WordPress
FIX CONSOLE / NETWORK

症状を記録 → 通信先を分ける → 1項目ずつ確認

FIX / cURL 28

タイムアウトは、通信先と発生条件を先に分ける。

症状cURL error 28/タイムアウト
最初発生時刻と対象機能を確認
次DNS・WAF・外部通信・負荷

SOURCE NOTE:WordPress公式資料とサイトヘルスの確認項目を基に、設定を一度に変えず原因を切り分ける順番へ整理しています。公開確認:2026年9月22日|公開URL・主要見出し・主要内部リンクの表示を再確認。

WORDPRESS TROUBLE GUIDE

cURL error 28は、まず「どの通信が止まったか」を切り分ける。

cURL error 28は、通信が設定された制限時間内に完了しなかったことを示します。WordPressから外部サービスへの通信だけでなく、自分のサイトへのREST API・ループバック通信でも出ることがあります。まずエラー全文とテスト名を保存し、「どこへの通信か」を確認します。28という番号だけでは原因は特定できません。

YOHAKU 5-STEP CHECK確認する順番

  1. 数分後に再確認する
  2. サイトヘルスのどの項目で出ているか記録する
  3. WordPress.orgやREST APIへの通信を確認する
  4. WAF・セキュリティ・キャッシュ設定を確認する
  5. 繰り返す場合はホスティング側のログを確認する

1.cURL error 28は何を意味する?

libcurl公式では28番をCURLE_OPERATION_TIMEDOUTと説明しています。HTTPステータスコードではありません。libcurl公式:エラーコード一覧

表示例(説明用):cURL error 28: Operation timed out after 10000 millisecondsなら、10000ミリ秒=10秒で時間切れになったという意味です。実際の制限時間は呼び出し元の設定によって異なります。この数字だけを根拠に、すべてのWordPressのタイムアウトを10秒と決めたり、制限値だけを増やしたりしないでください。

ブラウザ側で「504 Gateway Timeout」と表示され、ページ自体が開きにくい場合は原因の切り分けが異なります。その場合は、WordPressの504 Gateway Timeoutの原因と確認手順で、サーバー処理・PHP・プラグイン・外部通信などを順番に確認してください。

2.まず一時的な通信障害か確認する

外部サービスやサーバーの一時的な混雑でも発生するため、同じ操作を短時間に連打せず、少し時間を置いて再確認します。繰り返す場合は、エラーが出るURLや時刻を控えます。

3.サイトヘルスのエラー内容を読む

「ツール → サイトヘルス」でREST API、ループバック、WordPress.orgへの通信など、どのテストが失敗しているか確認します。エラー文をそのまま保存しておくと、ホスティング会社へ相談しやすくなります。

サイトヘルスの重大な問題を確認する方法もあわせて確認できます。

4.WAF・セキュリティ・キャッシュを確認する

外部通信やREST APIを制限する設定があると、通信が完了せずタイムアウトする場合があります。WAF全体を無効にするのではなく、該当時刻のログや直前の設定変更を確認します。

403も同時に出ている場合は、WordPressの403エラー確認手順へ進んでください。

5.DNSやサーバー負荷も原因候補

名前解決の遅延、サーバー負荷、外部通信制限などでもタイムアウトが起こる場合があります。自分で原因を特定できない場合は、発生時刻・対象URL・エラー全文をホスティング会社へ伝えます。

状況別の切り分け

発生場面 確認ポイント
サイトヘルスだけ 失敗しているテスト名、REST API、ループバック
プラグイン更新時 WordPress.orgへの通信、サーバー負荷
特定APIだけ 外部サービス側、WAF、DNS
403も同時発生 WAF・セキュリティ設定

JSONレスポンスエラーも出る場合

ブロックエディターの保存でエラーが出る場合は、REST APIの通信問題が共通している可能性があります。正しいJSONレスポンスではありませんと出るときの確認手順も確認してください。

再発する場合は、設定変更より先に記録を残す
発生時刻・失敗した操作・通信先・エラー全文を控え、下のサポートへ渡す相談文にまとめてください。ログイン情報やAPIキーは共有しません。

WAFは全体を無効にせず、該当時刻のログと対象通信を確認します。特定の外部サービスだけ失敗するのか、複数通信が同時に失敗するのかを分けて記録すると切り分けやすくなります。

cURLエラーで設定を一気に変えない

タイムアウトを解消する目的だけでPHP設定や通信タイムアウト値を大きく変更するのは避けます。まず原因が外部通信、DNS、WAF、負荷のどこにあるかを切り分けます。再確認するときは、最初に失敗した同じ操作・サイトヘルスの同じテストを実行し、結果と時刻を記録します。公開ページが開けることだけで、その通信の問題が解消したとは判断しません。

cURL error 28が続くときに渡す情報

一時的な通信遅延か、どのテストで失敗しているかまでは自分で確認できます。cURL error 28が繰り返す、複数の外部通信が同時に失敗する、DNS・WAF・サーバー負荷のどこが原因か切り分けられない場合は、エラー全文・対象URL・発生時刻を添えてホスティング会社へ相談してください。

発生日時・タイムゾーン:【】
失敗した操作・サイトヘルスのテスト名:【】
エラー全文:【】
通信先のドメイン・パス:【表示されていなければ不明】
再確認の結果:【正常に戻った/再発した】
影響:【更新・投稿保存・公開ページのどれに影響したか】
直前に変えた設定:【なければ変更なし】

通信先にAPIキーやトークンが含まれる場合は伏せてください。ブラウザから開けることだけでは、WordPressが動くサーバーからの通信成功は確認できません。発生時刻のサーバーログ・通信制限を確認してもらう材料として使います。

どこまで分かった?通信先ごとに次の確認を選ぶ

確認できたこと 次に確認すること
ループバックのテストで失敗 自分のサイトへの通信。認証やアクセス制限、同時刻のサーバーログを確認する。
特定プラグインの外部APIだけ失敗 その接続先と発生時刻を記録し、サービスの障害案内・サーバーからの通信状況を確認する。
複数の通信で同じ時間帯に失敗 共通するDNS・外向き通信・サーバー負荷を調査候補として相談する。原因確定とは書かない。
通信先が表示されない テスト名とエラー全文を保存し「通信先は不明」と伝える。URLを推測で補わない。

PCやスマホから接続先が開いても、WordPressが動くサーバーからの通信成功とは別です。復旧判定は、最初に失敗した同じテスト・操作の再実行で行います。これは切り分け手順で、YOHAKUで各障害を再現した実験結果ではありません。

よくある質問

cURL error 28が1回出ただけなら放置してよいですか?

一時的な通信遅延なら再発しないこともあります。更新や投稿保存に影響がなく、その後正常なら経過を見られますが、繰り返す場合は確認が必要です。

WAFをOFFにすれば直りますか?

原因がWAFとは限りません。全体を無効にせず、ログで該当通信がブロックされているか確認してください。

似た症状を分ける|cURL error 28・504・429

同じ「通信エラー」に見えても、外部HTTP通信・ページ応答・回数制限では確認場所が違います。表示されたエラー文を基準に入口を分けます。

参考情報