REST API レスポンス: (http_request_failed) cURL error 28: Connection timed out after 10002 milliseconds

Linux

wordpressのfunction.phpをテーマファイルエディタで更新しようとしたら

致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました。SFTP を使うなど、他の手段で PHP ファイルの変更をアップロードする必要があります。

このようなエラーメッセージが表示され、更新できない状態になっていました。

この記事では、今回の状態を解決する方法を紹介いたします。

サイトと通信できないため!?

エラーメッセージには、サイトと通信できないためと表示されています。

そもそも、サイトと通信できないって、どういうことよ?
テーマファイルエディタで開けてるし、サイト自体も問題なく表示している。

サイトヘルスを見てみる

REST API エンドポイント: https://server.muu.icu/wp-json/wp/v2/types/post?context=edit
REST API レスポンス: (http_request_failed) cURL error 28: Connection timed out after 10002 milliseconds

このようなエラーが発生していた。

状況を整理してみる

  • functions.phpの記述ミス→初期状態のため何もしていない
  • プラグインをすべて停止した→状況改善せず
  • パーミション状態→正常
  • サーバーのWAF等確認→問題なし
  • cURLやOpenSSLが有効かどうか確認→問題なし

様々な状況を試してみたが、改善せず。
ネットで検索してみたが、これだ!という記事も見当たらず。

DNSについても、server.muu.icuで表示されているから、問題ないはずと思っていたが、これが原因だった。

当サイトは、自宅サーバーで運用しており、外向きのDNSは、外部DNSを使い、aレコードで名前解決を行っている。

内部DNSに関しては、使用しているPCが少ないため、hostsファイルにドメイン名とIPを書き込み運用していた。

つまりどういうことかというと
function.phpを更新する際、REST APIがhttps://server.muu.icu/wp-json/wp/v2/types/post?context=editへアクセスしているようで、サーバー自身が、https://server.muu.icu/wp-json/wp/v2/types/post?context=editへアクセスしようとするみたい。
しかし、内向きDNSは、クライアントPCしか名前解決を行っていなかったため、server.muu.icuへアクセスができない。

使用しているルーターによっては、内向きのDNSを簡易的に行ってくれる機能がついているものがあるようだが、そういった場合は、このエラーは発生しないと思われる。

つまりどうしたらいいのか?解決方法

サーバー自身が、内向きの名前解決ができれば、https://server.muu.icu/wp-json/wp/v2/types/post?context=editへアクセスでき、問題が解決できる。

サーバーのhostsに追記

192.168.0.101 server.muu.icu

これで、サイトヘルスの状態も良好となり、function.phpをテーマファイルエディタで更新できるようになった。

タイトルとURLをコピーしました