Laravel 开发中遇到权限问题 failed to open stream: Permission denied
错误现象:
messg:"file_put_contents(.../storage/framework/cache/data/03/8c/03xxxxxx):failed to open stream: Permission denied"
status: 500
经过搜索发现网络上大量的解决方案是
Laravel >= 5.4
php artisan cache:clear
chmod -R 777 storage/
composer dump-autoload
Laravel < 5.4
php artisan cache:clear
chmod -R 777 app/storage
composer dump-autoload
php artisan config:clear
php artisan cache:clear
我们队上面的 chmod -R 777 app/storage 操作表示缺乏严重的专业性。
所属用户 | 所属用户组 | 其他用户 | 含义 |
---|---|---|---|
7 | 5 | 5 | 表示文件所属用户本身拥有读写执行权限,同组用户和其他用户拥有读执行权限但没有写权限。 |
7 | 7 | 7 | 表示全部用户拥有全部权限,包括匿名用户 |
7 | 0 | 0 | 表示所属文件用户拥有全部权限,但是同组用户和其他用户没有任何权限 |
建议用户设置777这种权限很明显就是对linux系统权限不了解的产物。
如果php-fpm 运行用户和文件所属用户是同一个,那就直接700就可以了。
这样既可以保障数据安全,也能达到可写可运行可读的效果。
但是,我们项目运行本身就是700,所以上面的修复解决方案中的修改文件权限根本就不是整个问题的关键因素。
经过排除php artisan cache:clear这个是正确的操作方法。