web-dev-qa-db-ja.com

Laravel 5:laravel.logを開けませんでした:許可が拒否されました

最初から停止するために、権限の問題はありません。/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行目

14
ied3vil

SElinuxがApacheによるこのファイルの作成を妨げている可能性があります。

これをテストするには、次のコマンドで一時的にSElinuxを無効にできます。

setenforce 0

これにより、SElinuxが許容モードになります。これは、SElinuxログファイルに引き続きエラーメッセージが表示されることを意味しますが、SElinuxはコマンドをブロックしません。

SElinuxを再度アクティブにするには、次のように入力します。

setenforce 1

または、CentOSサーバーを再起動します。

残念ながら、CentOSでLaravel 5に問題があり、原因はSElinuxでした。SElinuxを無効にしました。二人はまだ一緒に働いてください!


更新

だからついにこれをさらに調査する機会があり、SELinuxをLaravel 5.と一緒に動作させました。上記の通り。

3つのことを行う必要があります。

  1. フォルダー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(/.*)?"
    
  2. SELinuxコンテキストをディレクトリに適用する必要があります。

    restorecon -Rv "/var/www/<Laravel Site>/storage"
    
    restorecon -Rv "/var/www/<Laravel Site>/bootstrap/cache"
    
  3. Apacheユーザーには、両方のディレクトリにファイルを作成する権限が必要です。これは、CentOS 7のACLを介して実現できます。

    setfacl -R -m u:Apache:rwX storage/
    
    setfacl -R -m u:Apache:rwX bootstrap/cache/
    

最後に行う必要があるのは、SELinuxを再度有効にすることです。

44
Jirennor

laravel 5のこれらのコマンドを試してください

$ php artisan cache:clear 

$ Sudo chmod -R 777 app/storage 

$ composer.phar dump-autoload

これは、少なくとも私の場合は、laravel=ログファイルへの書き込み権限がないためです。

9
Mustafa Dwekat

これは私のために働いた、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

すべての手順が必要というわけではありません。

2
ReesBo

storageフォルダーが存在することを確認する必要があります。 gitからデプロイする場合は、storageフォルダー自体が自動的に追跡および作成されることを確認してください。

0
lowerends

centos 7の場合

   # ausearch -c 'httpd' --raw | audit2allow -M my-httpd
   # semodule -i my-httpd.pp
0
Leemarshn

オンLaravel 5.7

$ cd/var/www/html/$ php artisan cache:clearアプリケーションキャッシュがクリアされました!

0
Lasimin