WordPressは信頼性の高いコンテンツ管理システム(CMS)ですが、例えば高度なサイトの編集を行う場合には、WordPressエラーに遭遇することも。その1つが、今回取り上げる「cURL error 28: Connection timed out」エラーです。

このエラーを解決する方法はいくつかあるのでご安心を。プラグインの無効化のようなすぐに実行できるものから、SSL設定の更新のような少し複雑な手法までさまざまです。

この記事では、「cURL error 28」の概要と原因についてご説明した後、6つの解決方法を見ていきます。早速本題に入りましょう。

WordPressの「cURL error 28」とは

cURL(別名Client URL)は、便利なコマンドラインです。URLを通じてサーバーとの間でデータの送受信を行います。

WordPressでは、REST API内で使用されており、cURLがAPIリクエストを処理することで、サイトがサーバーとデータベースに接続し、データを送信できるようになります。

図で表すと、以下のような仕組みになっています。

REST APIの仕組み
REST APIの仕組み

このデータ転送処理には、ある一定の時間がかかります。処理に時間がかかりすぎてしまうと、タイムアウトしてしまい、「cURL error 28: Connection timed out」というエラーメッセージが表示されることがあります。

通常、このエラーは、WordPress管理画面の「サイトヘルス」セクションで確認できます。「REST API でエラーが発生しました」という見出しをクリックすると、以下のようなメッセージが表示されます。

「Error: cURL error 28: Operation timed out after XX milliseconds with X bytes received (http_request_failed) 」(Xバイトを受信し、XXミリ秒後にオペレーションがタイムアウトしました)

また、以下のような関連メッセージが表示されることも。

「サイトへのループバックリクエストは失敗しました。現在、依存する機能は想定どおりに動作していません」

「cURL error 28:Connection timed out」エラーの原因

「cURL error 28」が表示される原因はいくつか考えられます。例えば、WordPressのファイアウォールが、特定のREST APIリクエストを不正なものとして認識している。この場合、マルウェアやその他のセキュリティの脅威からサイトを保護するために、リクエストの受信がブロックされます。

もしくは、DNSサーバーに何らかの不具合があったり、適切に設定されていない。この場合は、WordPress側がHTTPリクエストを正しく読み込めなくなることがあります。DNSサーバーは、ドメインのリクエストを受信してIPアドレスに変換し、ユーザーを正しいウェブサイトに転送する仕組みになっています。この処理が正しく行われないと、タイムアウトが生じ、今回のエラーにつながります。

DNSサーバーの仕組み
DNSサーバーの仕組み

または、使用しているサーバーのタイムアウト値の設定が低いことも。WordPressがサイトとデータベース間でデータを転送するのに必要な時間が確保されていない可能性があります。

あるいは、WordPressプラグインが原因となっていることも考えられます。サードパーティ製のソフトウェアには、cURLのデータ転送処理を妨げるコードやスクリプトが含まれている可能性があります。

「cURL error 28: Connection timed out」エラーを解決するには(6つの方法)

「cURL error 28」の概要と原因が分かったところで、早速エラーを解決しましょう。エラーメッセージの表示が消えるまで、これからご紹介する順にトラブルシューティングを行なってみてください。

なお、可能であればステージングサイトで実行してください。作業中に万が一何かしらの問題が発生し、本番サイトに影響を与えてしまう心配がなくなります。

Kinstaのホスティングプランでは、プレミアムステージング環境をご用意しています。MyKinstaから最大5つまで環境を作成することができます。

ステージングサイトでエラーを解決した後は、変更を本番サイトに反映するだけで完了です。まずは、ファイアウォールを一時的に無効化する方法についてご説明します。

1. ファイアウォールを一時的に無効化する

先ほど、ファイアーウォールがエラーの原因になることについて言及しました。基本的に、このWordPressのセキュリティ強化策は、疑わしいトラフィックを検出し、サイトに到達するのを未然に防いでくれるものです。しかし、稀に正当なREST APIリクエストも誤ってブロックされてしまうことがあり、これがエラーの原因になっているかもしれません。

確認するには、ファイアウォールを一時的に無効化してみてください。手順は、使用しているものによって若干異なりますが、以下、Wordfenceプラグインを使った方法をご紹介します。

まずは、WordPressの管理画面で「Wordfence」>「Firewall」に進みます。「Web Application Firewall Status」までスクロールダウンしてください。

Wordfenceのファイアウォールを無効化
Wordfenceのファイアウォールを無効化

ドロップダウンメニューから「Disabled(無効化)」を選択して、「Save Changes(変更を保存)」をクリックします。変更を保存したら、エラーが消えているかを確認してみてください。

その後、数分経ってからファイアウォールを再度有効化し、エラーが発生するかを確認します。無効化によって解決したエラーが再び表示される場合は、別のファイアウォールプラグインを利用するか、プラグイン開発者に問い合わせてみてください。

2. WordPressプラグインを無効化する

WordPressプラグインが原因になっている可能性もあります。これの確認方法についてはやや手間がかかりますが、インストールしているすべてのプラグインを無効化し、1つずつ再インストールしていきます。

WordPressの管理画面にアクセスできる場合は簡単です。「プラグイン」>「インストール済みプラグイン」に移動し、「プラグイン」の左横にあるボックスにチェックを入れて、すべてのプラグインを選択するだけ。それから「一括操作」のドロップダウンメニューから「停止」を選択して、「適用」をクリックしてください。

すべてのプラグインを一括で無効化
すべてのプラグインを一括で無効化

エラーが原因で管理画面にアクセスできない場合には、プラグインを手動で無効化する必要があります。FileZillaなどのSFTPクライアントでサイトに接続しましょう。

wp-contentフォルダを開いて、「plugins」という名前のサブフォルダを見つけます。

プラグインを手動で無効化
プラグインを手動で無効化

このフォルダ名を「plugins-old」に変更すると、すべてのプラグインが無効になります。その後、WordPressの管理画面にログインし、問題の原因となっているプラグインを特定するまで、1つずつ有効化していきます。

プラグインを特定したら、長期的な解決方法を見つけるまでは、WordPressを前のバージョンに戻すのが得策かもしれません。または、プラグインをアンインストールし、代替となるプラグインを探してみてください。

3. SSL設定を見直す

SSL(セキュア・ソケッツ・レイヤー)は、訪問者のブラウザとWordPressサイトとの間で暗号化された接続を行う仕組みであり、セキュリティ上、不可欠な機能です。

SSL証明書のインストールや設定が適切に行われていない場合、サイトに不具合が生じ、安全でないと判断されたリクエストがブロックされることがあります。これが、「cURL error 28」や「cURL error 27」などのSSL接続エラーを引き起こします。

SSL証明書が正しくインストールされているかを確認するには、まず、Qualys SSL LabsのSSL接続テストを実行してみてください。「Hostname」の横にあるボックスにサイト名を入力し、「Submit」をクリックします。問題がある場合には、次の画面で確認することができます。

Qualys SSL LabsのSSL接続テスト
Qualys SSL LabsのSSL接続テスト

上のスクリーンショットは、Kinstaのウェブサイトの例です。Cloudflare SSL証明書が適切に導入されており、問題がないことがわかります。

SSL証明書のインストールに問題がある場合には、証明書を再度インストールして適切に再設定を行なってください。SSL証明書の正しいインストール手順についてはこちらをご覧ください。設定を終えたら、問題がないかどうか上記の方法で再度テストを実行しましょう。

4. DNSの設定を確認する

先にも触れましたが、DNSサーバーが正しく設定されていない場合、WordPressがHTTPリクエストを処理できなくなり、「cURL error 28」が発生する可能性があります。

DNSサーバー自体に問題がある場合、ウェブサーバーに問題があり、タイムアウトする前にサーバー側でリクエストを処理できなくなっている可能性があるため、サーバーに問い合わせなければなりません。

ユーザー側で行えることがないため、利用しているサーバーのカスタマーサポートに連絡して、問題のトラブルシューティングと適切なDNS設定の伝搬方法を確認することをお勧めします。

エラーの原因が使用しているデバイス(コンピュータ)にあると予想される場合は、自分でDNS設定を確認することもできます。

WindowsでDNS設定を確認するには、「Windows + I」を押してください。「ネットワークとインターネット」に進んで、使用しているコンピュータのインターネット接続方法に応じて、「イーサネット」または「Wi-Fi」のどちらかを選びます。次に「プロパティ」を選択してください。

Windowsのネットワーク設定
Windowsのネットワーク設定

DNSサーバーの割り当て」を開きます。

「DNSサーバーの割り当て」設定
「DNSサーバーの割り当て」設定

ドロップダウンメニューから「手動」を選択し、「IPv4」の隣にあるスライダーをクリックします。

DNSの手動設定を有効化
DNSの手動設定を有効化

優先DNS」ボックスには、以下のいずれかのDNSを入力してください。

  • Cloudflare: 1.1.1.1
  • Google Public DNS: 8.8.8.8
  • OpenDNS: 208.67.222.222

代替DNS」ボックスには、上で選ばなかったどちらかを入力します。完了したら、「保存」をクリックして終了です(変更の反映にコンピュータの再起動が必要になる場合があります)。

5. サーバーの制限とcURLのバージョンを確認する

古いソフトウェアや、サーバーリソースの制限がcURLリクエストのタイムアウトの原因になっている可能性もあります。例えば、PHPやcURL、OpenSSLのバージョンが古い場合、「cURL error 28」が生じることがあります。

これを確認するには、WordPress管理画面で「ツール」>「サイトヘルス」>「情報」に進んで、「サーバー」を開きます。

WordPressのサーバー設定を確認
WordPressのサーバー設定を確認

推奨PHPとサーバーの条件に関する解説記事を参照して、各値が一致しているかどうかを確認してください。

一致しない場合は、PHPのバージョンを変更する方法をご覧ください。または、利用しているサーバーに問い合わせて、サポートを受けたり、サーバー構成の変更を依頼してください。

また、サイトのPHPメモリ制限と時間制限をある程度把握しておくことも重要です。メモリが不足していると、REST APIリクエストを処理する際にタイムアウトする可能性があり、その結果、「508 Resource Limit Is Reached」エラー、またはその他のcURLエラーにつながることがあります。

繰り返しになりますが、通常、この制限の最大値は、サーバー側で設定されています。制限を引き上げるには、サーバーに問い合わせる必要があります。

6. サーバーに問い合わせる

上記5つのすべての方法を実行しても解決しない場合には、最後の手段として、サーバーに連絡を取りましょう。

信頼性の高いサーバーであれば、ライブチャットなどのさまざまなサポートチャネルが用意されているはずです。Kinstaの場合は、ライブチャットですぐにサポートスタッフにお問合せいただけます。

Kinstaのカスタマーサポート
Kinstaのカスタマーサポート

なお、サーバーに問い合わせる際には、効率的に問題を解決するため、遭遇したエラーについてできる限り詳細な情報を提示するようにしてください。

まとめ

「cURL error 28: Connection timed out」は、サイトの編集中に表示されると面倒なエラーです。幸い、トラブルシューティングする方法がいくつかあります。

まずはファイアウォールやプラグインを一時的に無効化するような、簡単な方法から実行するのがお勧めです。それでも解決しない場合は、SSLとDNS設定、そしてサーバーリソースの上限を確認してください。すべてを実行してもうまくいかない場合は、お使いのサーバーに問い合わせてサポートを受けるのが賢明です。

技術的な問題にも対応してくれる信頼性の高いサーバーをお探しですか?KinstaのマネージドWordPressホスティングプランなら、24時間年中無休でカスタマーサポートを利用することができます。さらに、APMツールでサイトを監視し、パフォーマンスを改善することも可能です。ぜひKinstaのホスティングプランをお試しください。