wordpressのfunction.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をテーマファイルエディタで更新できるようになった。