要点: cURL エラー 28 は、WordPress がリモートサーバーへの接続中にタイムアウトしたことを意味します——多くはプラグインの更新、テーマのインストール、HTTP API リクエストの際に起こります。まずセキュリティプラグインのファイアウォールを無効にしてください。それで直らなければ、下の PHP メモリ上限と SSL の確認を進めます。
WordPress サイトで「cURL error 28: Connection timed out」に対処するのは、もどかしいものです。このエラーは、サイトからのリクエストが応答を受け取るのに時間がかかりすぎ、タイムアウトに至るときに発生します。サイトを遅くし、ユーザー体験に悪影響を及ぼすことがあります。
私たちが対応するサポートチケットでは、セキュリティプラグインのファイアウォール——特に Wordfence のレート制限ルール——が、相当な割合のケースで送信 cURL 呼び出しを遮断しています。この記事では、cURL エラー 28 を明確にし、なぜ起こるのかを説明し、段階的な対処法を示します。
Contents
cURL エラー 28 とは?
cURL は、WordPress がさまざまなプロトコルでデータを転送するために使うソフトウェアユーティリティです。「cURL error 28: Connection timed out after X milliseconds」 は、cURL リクエストが指定されたタイムアウト期間内に完了しないときに発生します。このエラーは、サーバーが十分に速く応答できず、タイムアウトに至ったことを示します。

cURL エラー 28 のよくある理由
症状が異なれば、根本原因も異なります。下の表を使って自分の状況を特定し、正しい対処へ進んでください。
| 症状 | 根本原因 | 対処法 |
|---|---|---|
| プラグインの更新やインストール時のみエラー | セキュリティプラグインのファイアウォールが送信リクエストを遮断 | 方法1:セキュリティプラグインのファイアウォールを無効にする |
| 更新だけでなくすべての外部呼び出しでエラー | HTTP API を妨げるプラグインまたはテーマの競合 | 方法2:競合するプラグインを無効にする |
| HTTPS リクエストでエラー。HTTP は動作する | SSL の設定ミスまたは期限切れの証明書 | 方法3:SSL の安全でないコンテンツ問題を解決する |
| すべてのプラグインを無効にしてもエラーが続く | PHP と互換性のない古い cURL バージョン | 方法4:cURL バージョンを確認する |
| 大量のデータ操作やプラグインのインストール後にエラー | cURL リクエストには低すぎる PHP メモリ上限 | 方法5:PHP メモリ上限を増やす |
| 他をすべて試しても、マネージドまたは共有ホストでエラー | サーバーレベルのレート制限やファイアウォールのルール | 方法6:ウェブホスティングプロバイダーに連絡する |
cURL エラー 28 を直す6つの方法:Connection Timed Out After X Milliseconds
- セキュリティプラグインのファイアウォールを無効にする
- 競合するプラグインを無効にする
- SSL の安全でないコンテンツ問題を解決する
- cURL バージョンを確認する
- PHP メモリ上限を増やす
- ウェブホスティングプロバイダーから助けを得る
注意: 変更を加える前に、ウェブサイトのバックアップを取っておくとよいでしょう。何か問題が起きても、サイトを以前の状態にすばやく復元できます。簡単な自動バックアップには WP Staging を使えます。さらに詳しくは、バックアップと復元のガイドをご覧ください。
1. セキュリティプラグインのファイアウォールを無効にする
WordPress のファイアウォールプラグインは、有害なトラフィックを遮断することでセキュリティの層を一つ加えます。しかし、ときに過度に慎重になり、正当な cURL リクエストを遮断して、「Operation Timed Out」 エラーを引き起こすことがあります。私たちが対応するサポートチケットでは、Wordfence のレート制限ルールが頻繁な原因です——まずファイアウォールを確認することが、ほぼ常に最も速い解決への道です。
セキュリティプラグインが問題を引き起こしているか確認するには:
- ファイアウォールを無効にする: セキュリティプラグインのファイアウォール機能をオフにするか、プラグインを無効化します。

- サイトをテストする: ファイアウォールをオフにしたあと、エラーが続くか確認します。
- ファイアウォールを再有効化する: 少し待ってからファイアウォールを再びオンにします。

- 別のセキュリティプラグインを試す: エラーが戻る場合、別のセキュリティプラグインの利用を検討するか、プラグインのサポートに助けを求めてください。一部のプラグインは、正当なリクエストが遮断されないように、自身の IP アドレスを許可リストに追加するよう求めることがあります。
これらの手順に従うことで、ファイアウォールが cURL エラーを引き起こしているか特定し、必要なデータを遮断せずにサイトを安全に保てます。
2. 競合するプラグインを無効にする
WordPress サイトで特定のプラグインの問題や競合に遭遇した場合、一時的に無効にする必要が生じることがあります。
すべてのプラグインを無効にすることで、サイト全体の機能に影響を与えずに問題を切り分けて解決できます。
やり方は次のとおりです。
- サイトにログインして WordPress の管理ダッシュボードにアクセスします。
- サイドバーメニューから「プラグイン」へ進んでクリックします。インストール済みプラグインの一覧が表示されます。

- 名前の横のチェックボックスをクリックして、無効にしたいプラグインを選びます。一度に複数のプラグインを選べます。

- プラグインを選んだら、一覧の上部にある 「Bulk Actions」 ドロップダウンメニューを見つけて 「Deactivate」 を選びます。
- ドロップダウンメニューの横にある 「Apply」 ボタンをクリックします。

プラグインを無効にしたら、ウェブサイトを更新して変更がすぐ反映されるか確認します。次に、プラグインを1つずつ再有効化し、そのたびにサイトを更新して問題のあるものを特定します。
原因が見つかるまでこの手順を繰り返し、プラグインの更新・差し替え、または開発者への問い合わせを検討してください。
3. SSL の安全でないコンテンツ問題を解決する
SSL 証明書(Secure Sockets Layer)は、ウェブサイトと訪問者の間のデータを保護するために不可欠です。送信されるすべてのデータが暗号化されることを保証し、不正アクセスを防ぎ、サイトへの信頼を高めます。
SSL を正しく実装すると、ウェブサイトが HTTPS プロトコルを使えるようになり、サーバーとユーザーのブラウザー間の接続が保護されます。
Hostinger プロバイダーのダッシュボードで SSL の状態を確認する:
ホスティングプロバイダーのダッシュボード(例:Hostinger)にログインして、SSL 証明書の状態を確認します。下の画像のように、有効かつ正しく設定されていることを確かめてください。

証明書が期限切れまたは無効と表示される場合、ホスティングのコントロールパネルから更新するか、プロバイダーのサポートに連絡してください。更新後はサーバーとブラウザーのキャッシュを消去し、ツール → サイトヘルス を再実行して、SSL の問題が解決したことを確認してから、もう一度 cURL をテストします。
4. cURL バージョンを確認する
- WordPress ダッシュボードのサイトヘルスページに移動します。
- 「情報」 タブを選び、「サーバー」 セクションを見つけます。
- そこに記載された PHP と cURL のバージョン情報を確認します。

より良いパフォーマンスのために cURL と PHP のバージョンを合わせる: スムーズな動作を確保するため、cURL のバージョンが PHP バージョンの要件を満たしていることを確認してください。
たとえば、サイトが PHP 8.1 を使っているなら、少なくとも cURL 7.2 が必要です。

cURL バージョンが古い場合は、ホスティングプロバイダーに連絡してアップグレードを依頼してください。ほとんどのマネージド WordPress ホストは、ダウンタイムなしでサーバーの cURL ライブラリを更新できます。
5. PHP メモリ上限を増やす
WordPress のプラグインは多くの機能で cURL リクエストを必要とし、特に大量のデータや複雑な処理では多くのメモリを消費することがあります。メモリや時間の上限が低すぎると、タイムアウトを示す cURL エラー 28 のようなエラーが出ることがあります。
これらの問題を防ぐには、サイトヘルスページからサーバーの PHP 上限を確認・調整してください。サイトのパフォーマンスを高めてタイムアウトを避けるために、.htaccess または wp-config.php ファイルでこれらの設定を増やすこともできます。
FileZilla のような FTP クライアント、またはウェブホストのファイルマネージャーを使って、WordPress インストールのルートディレクトリーにアクセスします。

wp-config.php ファイルを見つけ、右クリックして 「Edit」 オプションを選びます。

/* That's all, stop editing! Happy blogging. */ と書かれた行の前に次のコード行を追加し、「Save Changes」 ボタンをクリックします。
define('WP_MEMORY_LIMIT', '256M');
保存後、ツール → サイトヘルス → 情報 → サーバー に戻って、新しい PHP メモリ上限の値が有効になっていることを確認してから、失敗していた操作を再テストします。
6. ウェブホスティングプロバイダーから助けを得る
すべて試しても問題が続く場合は、ホスティングプロバイダーに助けを求める時です。セキュリティモジュールの競合、サーバーレベルのレート制限、送信接続を遮断するファイアウォールのルールなど、他の潜在的な原因を調べてもらえます。
サポートに連絡する際は、正確なエラーメッセージ、サイトヘルスページの WordPress と PHP のバージョン、すでに試した手順を伝えてください。これにより、問題をより速く診断してもらえます。
まとめ
cURL エラー 28 を解決する主な手順には、WordPress のファイアウォールを一時的にオフにすること、競合を確認するためにプラグインを無効にすることが含まれます。さらに、SSL 構成を見直し、サーバーのリソース上限が十分であることを確認することが不可欠です。
WordPress とプラグインを最新に保つことは、こうしたエラーを防ぐうえで極めて重要です。問題が続く場合は、ウェブホスティングプロバイダーに支援を求めてください。
直らなかった?高度なトラブルシューティング
上の6つの方法のどれでもエラーが解決しなかった場合、以下の手順が具体的な原因の特定に役立ちます。
WP_DEBUG ログを有効にする
cURL エラーの正確な状況を捉えるために、wp-config.php に次の行を追加します。
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
保存後、失敗する操作を実行し(たとえばプラグインの更新を行い)、wp-content/debug.log で cURL error 28 を含む行を確認します。ログのエントリーはどの URL がタイムアウトしたかを示し、問題が特定のリモートサーバーにあるのか、すべての送信リクエストに影響するのかを見極めるのに役立ちます。
PHP メモリを増やしてもエラーが戻る
PHP メモリ上限を増やしてもエラーが止まらない場合:
php.iniまたはwp-config.php経由で PHP のmax_execution_time設定を確認します。値が低いと、cURL の接続タイムアウトが発動する前にスクリプトがタイムアウトすることがあります。増やして再テストしてください。- ツール → サイトヘルス → 情報 → サーバー に移動して PHP メモリ上限が期待どおりの値を示すことを確認し、新しい
WP_MEMORY_LIMITの値が適用されているか検証します。
SSL は問題ないのにエラーが続く
SSL 証明書は有効なのに cURL がまだタイムアウトする場合:
- 別のネットワークから接続をテストして、リモートサーバー(たとえば
api.wordpress.org)が一時的に到達不能かどうかを確認します。 - 送信 HTTPS 接続がサーバーのファイアウォールレベルで遮断されていないことを、ホスティングプロバイダーに確認してもらいます。一部の共有ホスティング環境は、既定で送信接続を制限しています。
cURL の遮断を引き起こす特定のプラグインを特定する
すべてを一括で無効化せずに、どのプラグインが遮断を引き起こすかを絞り込むには:
- 上で示したとおり WP_DEBUG ログを有効にします。
- セキュリティとキャッシュのプラグインから始めて、プラグインを1つずつ無効化します。
- 無効化のたびに
wp-content/debug.logで新しい cURL エラー 28 のエントリーを確認します。 - 無効化すると新しいログエントリーが止まるプラグインが、遮断されたリクエストを開始しているものです。