繁体   English   中英

Laravel 5.2无法打开laravel.log

[英]Laravel 5.2 could not open laravel.log

我知道关于这个话题有很多问题,但我的问题很奇怪,这就是我决定发帖的原因。 我在/var/logs/apache/error.log有这个错误

  [Tue Mar 01 07:26:51.435312 2016] [:error] [pid 8837] [client 127.0.0.1:37843] PHP Fatal error:  Uncaught exception 'UnexpectedValueException' with message 'The stream or file "/var/www/personale/librarie-cor/storage/logs/laravel.log" could not be opened: 
failed to open stream: Permission denied' in /var/www/personale/librarie-cor/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:87\nStack trace:
\n#0 /var/www/personale/librarie-cor/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\\Handler\\StreamHandler->write(Array)
\n#1 /var/www/personale/librarie-cor/vendor/monolog/monolog/src/Monolog/Logger.php(289): Monolog\\Handler\\AbstractProcessingHandler->handle(Array)
\n#2 /var/www/personale/librarie-cor/vendor/monolog/monolog/src/Monolog/Logger.php(565): Monolog\\Logger->addRecord(400, Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
\n#3 /var/www/personale/librarie-cor/vendor/laravel/framework/src/Illuminate/Log/Writer.php(202): Monolog\\Logger->error(Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
\n#4 /var/www/personale/librarie-cor in /var/www/personale/librarie-cor/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 87

事情是我已经做了chmod -R 777 storage/ ,这里是截图:

chmoded

我该如何摆脱错误?

TLDR;

在终端上运行以下命令

# Clear Laravel cache and the compiled classes
php artisan cache:clear
php artisan clear-compiled

# Change the storage and cache directories permission
sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache

# Regenerate the composer autoload file
composer dump-autoload

更彻底的解释

这通常是因为Web服务器需要对storagebootstrap/cache目录的写访问权。

1.检查Web服务器进程正在使用哪个用户

首先,确保您的Web服务器进程由具有有限权限的帐户运行。 Nginx和Apache通常会自动创建和使用权限较低的www-data用户和组。 您始终可以使用ps命令检查正在运行的服务正在使用哪个用户:

ps aux | grep nginx

2.设置项目目录的所有者

接下来,确保Laravel项目目录由运行Web服务器进程的同一用户和组所有。 假设您的Web服务器由www-data运行,而您的项目目录位于/var/www/laravel ,您可以像这样设置所有权:

sudo chown -R www-data:www-data /var/www/laravel

3.授予storagecache目录的写访问权限

这是重要步骤,请确保为storagebootstrap/cache目录提供写入权限。

sudo chmod -R 775 /var/www/laravel/storage
sudo chmod -R 775 /var/www/laravel/bootstrap/cache

还是行不通?

如果上述步骤仍然无效,您可以尝试在shell中运行以下命令:

# 1. Clear Laravel cache
php artisan cache:clear

# 2. Delete the compiled class
php artisan clear-compiled

# 3. Regenerate the composer autoload file
composer dump-autoload

然而,它还没有奏效?

对于最后一个资源,尝试将权限设置为777 ,这意味着任何用户都可以读取和写入给定目录。

sudo chmod -R 777 /var/www/laravel/storage
sudo chmod -R 777 /var/www/laravel/bootstrap/cache

希望这有帮助。

我和Centos7有同样的问题......我尝试了一切。 最后,我在stackoverflow上找到了一篇帖子,暗示它可能是selinux。 我禁用了selinux,它有效!

如果您在Centos中,则禁用SELinux强制执行

在命令下面执行此操作。

setenforce 0

就我而言,这个解决方案非常有效。 希望这会有所帮助。

你应该尝试这样的事情 -

php artisan cache:clear
php artisan clear-compiled

sudo chmod -R 777 storage/ -R
composer dump-autoload

您可以转到此问题了解更多详情。

我终于找到了一个解决方案..好像问题与PSR-4和自动导入类有关

所以这是其他任何有这个问题的解决方案:

php artisan clear-compiled 
composer dump-autoload
php artisan optimize
php artisan cache:clear

用这个

chcon -R -t httpd_sys_rw_content_t存储

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM