Laravel:file_put_contents() 权限被拒绝 — 正确的 storage/framework/cache 权限?
Laravel: file_put_contents() permission denied — correct storage/framework/cache permissions?
我正在努力编辑位于 storage/framework/cache
的 Laravel 缓存。我有一个工作 运行ning 保存到某个缓存,但每次工作 运行s 时,都会出现此错误:
ERROR: file_put_contents(/var/www/html/---/storage/framework/cache/data/3c/c7/3cc7fd54b5a3cb08ceb0754f58371cec1196159a): failed to open stream: Permission denied
详情
- 当我保存到同一个缓存时(比如用同一个key,没有报错)
- 我正在 运行宁 nginx
- 我已经 运行 这个命令
sudo chown -R www-data:www-data storage
在 Laravel 应用程序所在的文件夹中,以及 sudo chmod -R 775 /home/<user>/<laravel folder>/storage
- 正在执行
ls -lh /storage/framework/cache
returns 以下操作:drwsrwsr-x 55 www-data www-data 4.0K Jan 18 20:56 data
.
- 现在我只是想知道完整、正确的 Laravel 权限集是什么以及如何恢复该设置。
感谢任何帮助!提前谢谢你。
1) 如果您查看 cache.php
配置文件,您会发现文件驱动程序的 storage/framework/cache/data
文件夹设置为写入:
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
],
这意味着必须正确设置该文件夹的权限,以便网络服务器用户可以成功写入该文件夹。
2) 或者你可以 运行 这个命令对我来说它解决了我的问题
php artisan cache:clear
chmod -R 775 storage/
composer dump-autoload
我使用 sudo php artisan cache:clear
完全清除了缓存。后来就再也没有出现过这个问题。
反对 Ismoil 的回答:永远不要创建 Laravel 存储文件夹 777
。它会带来安全风险。
其实刚好需要
php artisan cache:clear
但它只是暂时的,当使用新的 ip 或其他东西登录帐户时。还是发了。
所以尝试 chmod:
chmod -R 775 storage
和
chmod -R 775 storage/*
它解决问题
如果您使用的是 redis,那么您应该设置 .env 变量
CACHE_DRIVER=redis
我正在努力编辑位于 storage/framework/cache
的 Laravel 缓存。我有一个工作 运行ning 保存到某个缓存,但每次工作 运行s 时,都会出现此错误:
ERROR: file_put_contents(/var/www/html/---/storage/framework/cache/data/3c/c7/3cc7fd54b5a3cb08ceb0754f58371cec1196159a): failed to open stream: Permission denied
详情
- 当我保存到同一个缓存时(比如用同一个key,没有报错)
- 我正在 运行宁 nginx
- 我已经 运行 这个命令
sudo chown -R www-data:www-data storage
在 Laravel 应用程序所在的文件夹中,以及sudo chmod -R 775 /home/<user>/<laravel folder>/storage
- 正在执行
ls -lh /storage/framework/cache
returns 以下操作:drwsrwsr-x 55 www-data www-data 4.0K Jan 18 20:56 data
. - 现在我只是想知道完整、正确的 Laravel 权限集是什么以及如何恢复该设置。
感谢任何帮助!提前谢谢你。
1) 如果您查看 cache.php
配置文件,您会发现文件驱动程序的 storage/framework/cache/data
文件夹设置为写入:
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
],
这意味着必须正确设置该文件夹的权限,以便网络服务器用户可以成功写入该文件夹。
2) 或者你可以 运行 这个命令对我来说它解决了我的问题
php artisan cache:clear
chmod -R 775 storage/
composer dump-autoload
我使用 sudo php artisan cache:clear
完全清除了缓存。后来就再也没有出现过这个问题。
反对 Ismoil 的回答:永远不要创建 Laravel 存储文件夹 777
。它会带来安全风险。
其实刚好需要
php artisan cache:clear
但它只是暂时的,当使用新的 ip 或其他东西登录帐户时。还是发了。
所以尝试 chmod:
chmod -R 775 storage
和
chmod -R 775 storage/*
它解决问题
如果您使用的是 redis,那么您应该设置 .env 变量
CACHE_DRIVER=redis