vis*_*626 162 php exception laravel laravel-4
我是Laravel的新手.我试图打开http://localhost/test/public/,我得到了
异常处理程序出错.
我用Google搜索并更改了存储目录的权限,chmod -R 777 app/storage但无济于事.
我改变debug=>true了app.php并访问了页面并在异常处理程序中得到了错误:
无法打开流或文件"/var/www/html/test/app/storage/logs/laravel.log":无法打开流:/ var/www/html/test/bootstrap/compiled中的权限被拒绝. PHP:8423
然后我使用该命令更改了存储目录的权限,chmod -R 644 app/storage并且"异常处理程序中的错误"错误消失了并且加载了一个页面.但在那里我得到了这个:
file_put_contents(/var/www/html/laravel/app/storage/meta/services.json):无法打开流:权限被拒绝
eca*_*rol 313
vsmoraes的建议为我工作:
Laravel> = 5.4
php artisan cache:clear
chmod -R 777 storage/
composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
Laravel <5.4
php artisan cache:clear
chmod -R 777 app/storage
composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
注意:请勿在任何远程服务器(设备或生产)上进行此操作
当我问这个问题时,这是我的localhost上的一个问题,在虚拟机中运行.所以我认为设置一个777足够安全,然而,当他们说你应该寻找一个不同的解决方案时,人们是对的.先试试775
Adr*_*osa 68
对于使用Laravel 5一直面临此问题的googlers.
这是由尝试在storage/logs具有不同权限的文件夹中的同一日志文件中写入的不同用户引起的权限问题.
您的laravel配置可能会设置为每天记录错误,因此您的web服务器(apache/nginx)可能会在默认用户下创建此文件,具体取决于您的环境,它可能类似于_wwwOSX或www-data*NIX系统,然后问题你可能已经运行了一些工匠命令并遇到了一些错误,所以工匠会写这个文件但是用不同的用户,因为终端上的PHP是由不同的用户实际执行的登录用户,你可以通过运行这个命令来检查它:
php -i | grep USER
Run Code Online (Sandbox Code Playgroud)
如果您的登录用户在您的Web服务器上创建了该日志文件,您将无法在其中写入错误,反之亦然,因为laravel 655默认情况下会写入具有权限的日志文件,这只允许所有者在其中写入.
要修复此临时文件,您必须手动将该组的权限授予 664此文件,以便您的登录用户和Web服务器用户都可以写入该日志文件.
要永久避免此问题,您可能希望在storage/logsdir中创建新文件时通过继承目录中的权限来设置适当的权限此答案https://unix.stackexchange.com/a/115632可以帮助您解决问题那.
小智 41
对于使用Laravel 5,Homestead和Mac的每个人来说,试试这个:
mkdir storage/framework/views
Run Code Online (Sandbox Code Playgroud)
小智 40
您不应该授予777权限.这是一个安全风险.对于Ubuntu用户,在Laravel 5中,我sugest以递归方式更改目录存储的所有者:
试试以下内容:
sudo chown -R www-data:www-data storage
Run Code Online (Sandbox Code Playgroud)
在基于Ubuntu的系统中,www-data是apache用户.
小智 32
有些时候SELINUX引起了这个问题; 你可以用这个命令禁用selinux.
sudo setenforce 0
Run Code Online (Sandbox Code Playgroud)
小智 18
问题解决了
php artisan cache:clear
sudo chmod -R 777 vendor storage
Run Code Online (Sandbox Code Playgroud)
这启用了应用程序,框架,日志的写入权限希望这将有所帮助
Bre*_*dan 15
对于流浪者用户,解决方案是:
(在vagrant中)php artisan cache:清楚
(流浪者之外)chmod -R 777 app/storage
(在vagrant中)composer dump-autoload
确保你在当地环境中而不是在流浪者中进行chmod非常重要!
Ibr*_* W. 14
转到终端上laravel项目的目录并写下:
sudo chown -R your-user:www-data /path/to/your/laravel/project/
sudo find /same/path/ -type f -exec chmod 664 {} \;
sudo find /same/path/ -type d -exec chmod 775 {} \;
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
Run Code Online (Sandbox Code Playgroud)
这样你就可以让你的用户成为所有者并给予权限:
1执行,2写,4读
1 + 2 + 4 = 7表示(rwx)
2 + 4 = 6表示(rw)
最后,对于存储访问,ug + rwx表示您为用户和组提供了7
Kha*_*hay 12
再试一次chmod -R 755 /var/www/html/test/app/storage.Operation not permitted在chmod中使用sudo .如果仍有错误,请使用检查所有者权限.
根据Laravel 5.4,这是我写的最新版本,如果您有任何这样的问题,您需要更改权限. 不要听任何人告诉你为任何目录设置777. 它有一个安全问题.像这样更改存储文件夹的权限
sudo chmod -R 775 storage
Run Code Online (Sandbox Code Playgroud)
像这样更改bootstrap文件夹权限
sudo chmod -R 775 bootstrap/cache
Run Code Online (Sandbox Code Playgroud)
现在请确保您正在执行应用程序目录中的两个命令.关于许可,您将来不会遇到问题.775不会危及您机器的任何安全性.
建议正确的权限,如果对于Apache,
sudo chown -R apache:apache apppath/app/storage
Run Code Online (Sandbox Code Playgroud)
对于任何使用SELINUX运行操作系统的操作:允许httpd写入laravel存储文件夹的正确方法是:
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/path/to/www/storage(/.*)?'
Run Code Online (Sandbox Code Playgroud)
然后立即应用更改:
sudo restorecon -F -r '/path/to/www/storage'
Run Code Online (Sandbox Code Playgroud)
SELinux可能很难处理,但如果它存在,那么我强烈建议你学习它而不是完全绕过它.
小智 6
如果您使用 Linux 或 Mac,即使您也可以在ssh terminal. 您可以使用终端运行此命令,
php artisan cache:clear
sudo chmod -R 777 storage
composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Windows,则可以使用git bash.
php artisan cache:clear
chmod -R 777 storage
composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
您可以从https://git-scm.com/downloads下载 git 表单。
我遇到了同样的问题,以下步骤帮助我解决了该问题。
<?php echo exec('whoami'); ?>
并从网络浏览器运行该文件。它会给 apache 用户。就我而言,它是 ec2-user,因为我使用的是 aws,并且 cronjob 安装在 /etc/cron.d/ 中。对于其他人来说可能是不同的用户。
sudo chown -R ec2-user:<usergroup> /app-path/public
您需要在此处识别并使用正确的“用户”和“用户组”。
我遇到了同样的问题,但在views 目录中:
file_put_contents(/var/www/app/storage/framework/views/237ecf97ac8c3cea6973b0b09f1ad97256b9079c.php): failed to open stream: Permission denied
Run Code Online (Sandbox Code Playgroud)
我view用以下artisan命令解决了清理 s 缓存目录的问题:
php artisan view:clear
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
345014 次 |
| 最近记录: |