WordPressの管理画面(ダッシュボード)を開いたとき、またはプラグインやテーマをアップデートしようとしたときに、以下のような不穏なエラーメッセージが表示されて困っていませんか?
「ダウンロードに失敗しました。 RSS エラー: WP HTTP Error: cURL error 7: Failed to connect to …」
このエラーが出ると、プラグインの更新ができなくなるだけでなく、WordPressのダッシュボードに表示されるはずのニュースフィードなども全滅してしまいます。
今回は、この cURL error 7 が発生する原因と、初心者でも実践できる具体的な解決ステップをまとめました!
🔍 「cURL error 7」とは?何が起きている?
まず、このエラーの意味を簡単に解説します。
cURL(カール) とは、WordPress(PHP)が外部のサーバーと通信してデータを取ってくるための仕組みのことです。そして error 7 は、「相手のサーバーに接続しようとしたけれど、何らかの理由で通信が拒否された・繋がらなかった」 というネットワークの接続失敗を意味しています。
つまり、「WordPressが外部(wordpress.orgなど)のサーバーに最新データを判定・ダウンロードしに行こうとしたが、サーバーの通信の壁に阻まれてアクセスできなかった」という状態です。
🚨 主な原因は4つ
この通信エラーを引き起こす主な原因は、主に以下の4つに絞られます。
1. サーバーのDNS一時的な不具合
サーバーが「wordpress.org」などのドメインをIPアドレスに変換できず、接続先を見失っている状態です。一時的な負荷で発生することがあります。
2. レンタルサーバーの「海外IPアクセス制限」
セキュリティ強化のため、多くのレンタルサーバー(エックスサーバー、ConoHa WING、ロリポップなど)には「海外からのアクセスを遮断する機能」や「WP管理画面への海外IP制限」が備わっています。WordPressのシステム通信がこれに誤検知されてブロックされているケースです。
3. WAF(Webアプリケーションファイアウォール)の誤検知
サーバーのセキュリティ機能(WAF)が、WordPress内部からの外部通信を「不正な攻撃・不審な通信」と勘違いして遮断してしまうパターンです。
4. サーバーのIPv6通信の不具合
サーバーが外部と通信する際、IPv6での接続を優先しようとした結果、ルートが詰まってタイムアウトや接続拒否(error 7)を起こすことがあります。
🛠️ エラーを解消するための4つの解決ステップ
上から順番に、試しやすいものから確認していきましょう。
ステップ1:時間をおいて再試行してみる(DNS・外部サーバー側の一時的要因)
もし、wordpress.orgのサーバー自体がメンテナンス中だったり、一時的に落ちていたりする場合、こちら側で何をしても直りません。少し時間を置いてから再度プラグインの更新などを試してみてください。
ステップ2:サーバーの「WAF」設定を一時的にOFFにする
利用しているレンタルサーバーの管理画面(コントロールパネル)にログインし、WAF設定を確認します。 一度WAFを「無効(OFF)」切り替え、WordPressの画面に戻ってエラーが消えるか試してみましょう。もしこれで直った場合はWAFの誤検知が原因です。原因特定後はWAFをONに戻し、検出ログから該当の通信を除外(許可)する設定を行ってください。
ステップ3:海外アクセス制限(REST API制限など)を見直す
レンタルサーバーのセキュリティ設定にある「WordPressセキュリティ設定」や「海外アクセス制限」の項目を確認します。 特に「REST APIアクセス制限」や「XML-RPC禁止」などの項目が有効になっていると、外部RSSの読み込みや通信が弾かれることがあります。これを一時的に緩和して様子を見てください。
ステップ4:【重要】サーバーのIPv6通信を無効化する(またはIPv4を優先する)
多くのインフラエンジニアがこのエラーに直面した際、最終的に行き着くのがこれです。 サーバー(またはcURLの設定)が、外部へIPv6で接続しようとして失敗しているケースが多々あります。
もし自身でサーバー(VPSや専用サーバー、ローカル環境など)を管理している場合は、通信時にIPv4を強制・優先するように設定変更します。 プラグイン(「Core Control」など通信をテストできるもの)を使用するか、テーマの functions.php に一時的にcURLのオプションを書き換えるコードを追記することで、IPv4固定での通信を試みることができます。
PHP
// cURLの通信をIPv4優先にするフックの例
add_action('http_api_curl', 'set_curl_ipv4', 10, 5);
function set_curl_ipv4($handle, $r, $url){
curl_setopt($handle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
※ functions.php を編集する際は、必ず事前にバックアップを取ってから行ってください。
📝 まとめ
WordPressの「cURL error 7」は、「サーバーの防犯カメラ(セキュリティ機能)が、身内の通信を不審者扱いして閉め出している」 か、「ネットワークの通り道(IPv6など)で迷子になっている」 のどちらかがほとんどです。
まずは手軽にできる「レンタルサーバーのWAFやアクセス制限のオン・オフ」からチェックして、どこに原因があるかを探ってみてください。ネットワークの壁を正しく開放してあげれば、またいつも通り快適にアップデートができるようになりますよ!
【参考】
Japanese Moodle: アップデートの確認時にcURL error 7のエラーが表示される | Moodle.org
WP:サイトヘルス:致命的な問題 – Plusload.inc
