WordPressで「failed to open stream: Permission denied in /…」と表示された時の解決法

WordPressの豆知識

こんにちは、クリエイターのSHOJIです。
先日、WordPressでブログを運営されておられる方より「ブログが表示されず、WordPressの管理画面にもログインできなくなったので助けてほしい」というご相談があり、無事に解決できましたので、事例紹介もかねてシェアさせていただきます。
 
 症状の確認
 原因の特定
 パーミッション変更
 まとめ
 

症状の確認

「ブログが表示されない!」とのことで、どういった症状なのか確認してみたところ、ブラウザで表示されていたのがこの画像です。管理画面内での表示ではないため、訪問者すべてにこの表示が見えてる状態でした。

WordPressで「failed to open stream: Permission denied in」と表示された時の解決法

いきなりブラウザでこんな表示が出たらビックリすると同時に、この辺りに知識がないとどうして良いのか分からず混乱してしまいますよね。

しかも、クローラへの影響だけでなく、リピーターや固定ファンの方も離れてしまう可能性があるなど、このまま放っておくと取り返しのつかない状況になりかねませんでした。

それでは、ざっくりと何が書いてあるのか見てみましょう!

Warning: require(/●●●/public_html/wp-includes/nav-menu-template.php): failed to open stream: Permission denied in /●●●/public_html/wp-settings.php on line 237

Fatal error: require(): Failed opening required '/●●●/public_html/wp-includes/nav-menu-template.php' in /●●●/public_html/wp-settings.php on line 237

『PHPファイル[nav-menu-template.php]を読み込もうとしましたが、指定されたファイルへの権限がありません。指定されたコードの記述個所は[wp-settings.php]ファイルの237行目です。これは処理を停止するほど致命的なエラーです。』

表示された「Fatal error(フェイタルエラー)」は、「NOTICE」などのように、とりあえず無視しても大きな問題にならない軽いエラーとは違い、処理を停止するほど致命的なエラーのため、今すぐ対応が必要だということを表しています。
 

原因の特定

今回のブログ運営者はエックスサーバーを利用されていたため「ファイルマネージャ」にログインさせていただき確認を開始しました。

WordPressで「failed to open stream: Permission denied in」と表示された時の解決法

まずは、[public_html]ディレクトリ内にある[wp-settings.php]ファイルの237行目を確認しましたが、エラー表示にもあるように[nav-menu-template.php]を読み込みに行くよう指定する記述がされています。

ここでは特に問題がないので、記述通り[public_html]→[wp-includes]ディレクトリ内にある[nav-menu-template.php]を確認してみます。

WordPressで「failed to open stream: Permission denied in」と表示された時の解決法

[nav-menu-template.php]ファイルを確認すると、ファイルサイズが「0.00KB」パーミッションが「000」となっていました。

先述の『指定されたファイルへの権限がありません』的なエラーの場合、そのほとんどがこのパーミッションエラーによるものなので、[nav-menu-template.php]ファイルを適切なパーミッションに変更することで解決できそうだと推測できます。
 

パーミッション変更

エックスサーバー公式サイトでは「.html / .php / .zip などのファイル」の適切なパーミッションの設定について「644」値としています。

WordPressで「failed to open stream: Permission denied in」と表示された時の解決法

[nav-menu-template.php]項目左のチェックボックスをオンにした状態でページ上部に戻ると、パスボックスに[nav-menu-template.php]のパスが表示されています。

パスの表示を確認後、その下の「パーミッション変更」ボタンをクリックすると、該当ファイルの操作画面に移動します。

WordPressで「failed to open stream: Permission denied in」と表示された時の解決法

ファイルの操作画面が表示されたら、ファイル名に間違いがないか再度確認して、右部にある入力ボックス内に「644」と入力し「パーミッション変更」ボタンをクリックします。

WordPressで「failed to open stream: Permission denied in」と表示された時の解決法

変更後あらためて[nav-menu-template.php]項目を確認すると、適切なパーミッション値の設定によってファイルも正常に戻っているのが確認できました。

最後にブログを確認したところ、エラー表示もなくなり、無事にブログが表示されました。
 

まとめ

今回の原因は「不適切なパーミッション値の設定」によるものでしたが、なぜパーミッション値が変更されたかについては定かではありません。

ブログ運営者の話しによると、プラグインをアップデートした後しばらく経ってからエラー表示に気がついたとのことでしたが、ご本人が意図的に操作したのでなければ、利用しているプラグインまたはテーマのアップデートの際に何らかの影響でパーミッション値が変更されてしまったものと思われます。

そうすると、今回のように意図せず不適切なパーミッション値に設定が変更されてしまうケースは、誰にでも起きてしまう可能性があります。そうなってしまった時に、この記事が少しでもお役に立てれば幸いです。

Webの豆知識」の関連記事

インフォコネクトに
相談してみませんか?

経営コンサルティングやITサービス活用支援、ホームページ制作などに関するご依頼や、ご質問・ご相談など、なんでもお気軽にお問い合わせください。