最初から停止するために、権限の問題はありません。/storageは再帰的にchmodded 777
とプロジェクトフォルダー全体がApache:apacheによって混乱します。
ログファイルの名前を...- oldに変更し、Apacheは新しいログファイルを作成しました...実際の書き込みアクセス許可がなければ、作成は許可されませんでした。
CentOSリリース6.6(最終)で実行
ホームステッドはgitからプロジェクトを展開し、私の同僚のために働いています。
完全なエラー:
[2015年5月18日10:17:58 2015] [エラー] [クライアント86.124.208.14] PHP致命的エラー:キャッチされない例外 'UnexpectedValueException'とメッセージ 'The stream or file "/ var/www /vhosts/mapper.pavementlayers.com/storage/logs/laravel-2015-05-18.log "を開けませんでした:ストリームを開けませんでした:/var/www/vhosts/mapper.pavementlayers.com/で許可が拒否されました ' vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:84\nStack trace:\ n#0 /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/ RotatingFileHandler.php(88):Monolog\Handler\StreamHandler-> write(Array)\ n#1 /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php (37):Monolog\Handler\RotatingFileHandler-> write(Array)\ n#2 /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Logger.php(265):Monolog\Handler\AbstractProcessingHandler-> handle(Array)\ n#3 /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog /Logger.php(543):Monolog\Logger-> addRecord(400、 'exception' Symf ... '、Array)\ n#4 /var/www/vhosts/mapper.pavementl in/var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.phpの84行目
SElinuxがApacheによるこのファイルの作成を妨げている可能性があります。
これをテストするには、次のコマンドで一時的にSElinuxを無効にできます。
setenforce 0
これにより、SElinuxが許容モードになります。これは、SElinuxログファイルに引き続きエラーメッセージが表示されることを意味しますが、SElinuxはコマンドをブロックしません。
SElinuxを再度アクティブにするには、次のように入力します。
setenforce 1
または、CentOSサーバーを再起動します。
残念ながら、CentOSでLaravel 5に問題があり、原因はSElinuxでした。SElinuxを無効にしました。二人はまだ一緒に働いてください!
だからついにこれをさらに調査する機会があり、SELinuxをLaravel 5.と一緒に動作させました。上記の通り。
3つのことを行う必要があります。
フォルダーStorageおよびBootstrap/Cacheには、適切なSELinuxコンテキストが必要です。これは、次のコマンドを使用して実現できます。
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/<Laravel Site>/storage(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/<Laravel Site>/bootstrap/cache(/.*)?"
SELinuxコンテキストをディレクトリに適用する必要があります。
restorecon -Rv "/var/www/<Laravel Site>/storage"
restorecon -Rv "/var/www/<Laravel Site>/bootstrap/cache"
Apacheユーザーには、両方のディレクトリにファイルを作成する権限が必要です。これは、CentOS 7のACLを介して実現できます。
setfacl -R -m u:Apache:rwX storage/
setfacl -R -m u:Apache:rwX bootstrap/cache/
最後に行う必要があるのは、SELinuxを再度有効にすることです。
laravel 5
のこれらのコマンドを試してください
$ php artisan cache:clear
$ Sudo chmod -R 777 app/storage
$ composer.phar dump-autoload
これは、少なくとも私の場合は、laravel=ログファイルへの書き込み権限がないためです。
これは私のために働いた、Laravel 5.4以上
$ Sudo chmod -R 755 storage/
$ Sudo chown -R www-data storage/
$ Sudo chgrp -R www-data storage/
$ php artisan cache:clear
$ php artisan config:cache
$ composer dumpautoload
すべての手順が必要というわけではありません。
storage
フォルダーが存在することを確認する必要があります。 gitからデプロイする場合は、storage
フォルダー自体が自動的に追跡および作成されることを確認してください。
centos 7の場合
# ausearch -c 'httpd' --raw | audit2allow -M my-httpd
# semodule -i my-httpd.pp
オンLaravel 5.7
$ cd/var/www/html/$ php artisan cache:clearアプリケーションキャッシュがクリアされました!