前回の記事で、「LAMPを構築してみたものの、本番環境と開発環境とで挙動が違う」という問題があることを言いました。今回はその問題が解決したので、順を追って説明したいと思います。
前回の記事
参考にした記事
問題の原因は…
結論から言うと、「各ファイルに読み込み権限がないこと」が原因でした。
原因が分かるまで手当り次第に思いついたことをしてみたので、変なことしているなと思っても大目に見てやってくださいw
初期状況
前回の記事より、「info.php」のファイルからサーバーやPHPの情報が表示できることは確認しました。そこで本番環境で置いてある、とあるディレクトリ以下の中身をそのまま「info.php」のあるディレクトリにコピペして持ってきました。実際に読み込みたい内容は、その中の「index.php」です。「http://IPアドレス/index.php」にアクセスしましたが、「HTTP ERROR 500」が表示されるだけでした。
やってみたこと①
「index.php」に書いてある内容をコピーして、「info.php」に貼り付けました。その後、「http://IPアドレス/info.php」にアクセスすると、「info.php」の中にあるhtmlの部分だけ表示されるようになりました。
やってみたこと②
あーでもないこーでもないと考えていると、”「http://IPアドレス/」にアクセスするとどうなるのかな?”とふと思ってアクセスしました。するとこのように表示されました。
「info.php」にアクセスすると以前の表示のままですが、それ以外のファイルにアクセスすると以下のように表示されました。
どうやらファイルにアクセスする権限がないようです。本番環境ならアクセスができるからうまく表示もされるはずなのにどうして?と思いましたが、解決策を探しました。たどり着いたサイトが冒頭に紹介したサイトです。
解決策
調べてみると、読み込み権限がないので読み込み権限を付与させると解決するようです。読み込み権限の有無は以下のコマンドで確認できます。
各権限は「r(4)」、「w(2)」、「x(1)」、「-(0)」の4文字で表現されます。(もしくは数字)詳しくは下のサイトを参照してみてください。
その他のユーザーに読み込み権限が必要なようです。要するに、右から3つめの文字が「r」でないといけません。「-」ではダメです。
読み込み権限がないことが確認できたなら、権限を付与してみましょう。コマンドは以下のとおりです。
これにより権限を付与でき、「info.php」にアクセスするとファイルが読み込まれていることが確認できました。
まとめ
繰り返しになりますが、原因はファイルに読み込み権限がなかったことでした。これで自身のコンテンツの作成が捗りそうです。