csa*_*mus 12 php chmod laravel laravel-5
我知道关于这个话题有很多问题,但我的问题很奇怪,这就是我决定发帖的原因.我有这个错误/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
Run Code Online (Sandbox Code Playgroud)
事情是我已经做了chmod -R 777 storage/,这是一个截图:
我该如何摆脱错误?
Ris*_*ana 44
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
Run Code Online (Sandbox Code Playgroud)
更彻底的解释
这通常是因为Web服务器需要对storage和bootstrap/cache目录的写访问权.
首先,确保您的Web服务器进程由具有有限权限的帐户运行.Nginx和Apache通常会自动创建和使用权限较低的www-data用户和组.您始终可以使用该ps命令检查正在运行的服务正在使用哪个用户:
ps aux | grep nginx
Run Code Online (Sandbox Code Playgroud)
接下来,确保Laravel项目目录由运行Web服务器进程的同一用户和组所有.假设您的Web服务器运行www-data并且您的项目目录位于/var/www/laravel,您可以设置所有权,如下所示:
sudo chown -R www-data:www-data /var/www/laravel
Run Code Online (Sandbox Code Playgroud)
storage和cache目录这是重要的步骤,请确保您同意storage和bootstrap/cache目录的写入权限.
sudo chmod -R 775 /var/www/laravel/storage
sudo chmod -R 775 /var/www/laravel/bootstrap/cache
Run Code Online (Sandbox Code Playgroud)
如果上述步骤仍然无效,您可以尝试在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
Run Code Online (Sandbox Code Playgroud)
对于最后一个资源,尝试设置权限,777这意味着任何用户都可以读取和写入给定目录.
sudo chmod -R 777 /var/www/laravel/storage
sudo chmod -R 777 /var/www/laravel/bootstrap/cache
Run Code Online (Sandbox Code Playgroud)
希望这有帮助.
小智 6
如果您在Centos中,则禁用SELinux强制执行
在命令下面执行此操作.
setenforce 0
Run Code Online (Sandbox Code Playgroud)
就我而言,这个解决方案非常有效.希望这会有所帮助.
你应该尝试这样的事情 -
php artisan cache:clear
php artisan clear-compiled
sudo chmod -R 777 storage/ -R
composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
您可以转到此问题了解更多详情.
我终于找到了解决方案..似乎问题与 PSR-4 和自动导入类有关
因此,对于其他遇到此问题的人来说,这是解决方案:
php artisan clear-compiled
composer dump-autoload
php artisan optimize
php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19099 次 |
| 最近记录: |