laravel5のインストールで、ファイルパーミッションエラー
半年以上ぶりの更新が、さっきまで5時間くらいハマった内容です。
今後、ハマらないようにメモ。
やったこともないPHPでいきなりlaravelなんていうフレームワークのしかも最新版だったから情報がなかった。
経緯
ハマるまでの流れは、laravel5のドキュメントに沿って laravelのインストールを進めていたところだった。
// composerでlaravel5をインストール $ composer global require "laravel/installer=~1.1" // laravelプロジェクトを展開するディレクトリへ移動 $ cd /var/www // wwwディレクトリ下にlaravelというプロジェクトを作成する。 $ laravel new laravel
最後に、apacheのルートディレクトリを変更し、.htaccessを有効にする。
$ sudo vi /etc/httpd/conf/httpd.conf // ドキュメントルートを/var/www/laravel/publicへ変更 DocumentRoot "/var/www/laravel/public" // Directoryも同じように変更 // AllowOverride All でhtaccessを有効化。 <Directory "/var/www/laravel/public"> AllowOverride All Require all granted </Directory>
ここまでは問題なくいった。
HTTP 500 - 内部サーバー エラー
ドキュメントの指示に従い、storage
とbootstrap/cache
ディレクトリ配下をすべてパーミッションを読書き可能に変更。
ユーザはhttpdのユーザを指定。今回はapache。
// laravelディレクトリ下の所有者・所有グループをapacheに変更。 $ sudo chown -R apache:apache /var/www/laravel // storageディレクトリのパーミッションを775へ変更。 $ sudo chmod -R 775 /var/www/laravel/storage // bootstrap/cacheディレクトリのパーミッションを775へ変更。 $ sudo chmod -R 775 /var/www/laravel/bootstrap/cache
とりあえずここまできたらブラウザから稼働確認できそうだったので、http://localhost:80
で確認。
HTTP 500 - 内部サーバー エラー
なんでだ!
パーミッションを777にしてみたり、所有ユーザ変えてみたり、apacheの設定変えてみたりいろいろしてみたけど、駄目だった。。。。
apache エラーログ
ここまで3時間ほど経ったと思う。
神にすがる思いでapacheのエラーログに何か吐いてないか確認。
~ PHP Fatal error: Uncaught exception 'UnexpectedValueException' with message 'The stream or file "/var/www/laravel/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied' ~
/var/www/laravel/storage/logs/laravel.log
が書き込めません。パーミッションがありまあせん。みたいなエラー吐いてた。
パーミッション設定してるよ。。。。。
~~
で、いろいろ調べた結果、ここのコマンド実行したらイケた。
Laravel5 gives Blank Page with 500 status code on Apache fedora22
chcon -R -t httpd_sys_rw_content_t /var/www/laravel/storage chcon -R -t httpd_sys_rw_content_t /var/www/laravel/bootstrap/cache
何してるかって、selinuxのファイルコンテキストを書き換えてるんですね。httpd_sys_rw_content_t
に。
ファイルコンテキストには目つけたけど、httpd_sys_rw_content_t
じゃないとだめっていうのにたどり着くまで何時間もかかってしまった。。
しんどい。。。
chconは一時的にファイルコンテキストを変更するコマンドなので、恒久的に変更する場合はsemessage
コマンドとか使ったほうがいいかもね。
もし同じところで躓いている人いれば、助けになればと思います。。。。
以上!