Laravel:file_put_contents() 无法打开流:会话文件夹的权限被拒绝

Posted

技术标签:

【中文标题】Laravel:file_put_contents() 无法打开流:会话文件夹的权限被拒绝【英文标题】:Laravel: file_put_contents() failed to open stream: Permission denied for Session folder 【发布时间】:2016-12-17 17:35:05 【问题描述】:

即使我已将 777 和所需的用户和组分配给存储中的文件夹,我也会遇到会话问题。

Filesystem.php 第 81 行中的 ErrorException:file_put_contents(/var/www/html/business/storage/framework/sessions/2b184c1b05d6d2af943d9a4e48875301321a56ec):无法打开流:权限被拒绝

我怎样才能摆脱这个问题?

在 HandleExceptions->handleError('2', 'file_put_contents(/var/www/html/business/storage/framework/sessions/2b184c1b05d6d2af943d9a4e48875301321a56ec): 无法打开流:权限被拒绝', '/var/www/html/business/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php', '81', 数组('路径' => '/var/www/html/business/storage/framework/sessions/2b184c1b05d6d2af943d9a4e48875301321a56ec', '内容' => 'a:5:s:6:"_token";s:40:"Dyi8ML8zxaQJOEiVvqBpqk3noLDJTkIdqiC67qs9";s:9:"_previous";a:1:s:3:"url";s:29:"@987654321 @";s:22:"PHPDEBUGBAR_STACK_DATA";a:0:s:9:"_sf2_meta";a:3:s:1:"u";i:1470895812;s:1:"c" ;i:1470895812;s:1:"l";s:1:"0";s:5:"flash";a:2:s:3:"old";a:0:s :3:"新";a:0:', '锁定' => true))

【问题讨论】:

您是否对存储中所有文件夹的权限进行了递归更改?如果你这样做chmod -R 777 storage,可能会起作用。 全部完成,问题依旧 也许这个故障排除清单会对您有所帮助:***.com/questions/36577020/… file_put_contents(meta/services.json): failed to open stream: Permission denied的可能重复 【参考方案1】:

我遇到了这样的问题,执行以下操作为我解决了问题

chmod -R gu+w storage

chmod -R guo+w storage

php artisan cache:clear

从答案here得到它

【讨论】:

如果即使在执行了geneowak提到的所有步骤之后这些都不起作用,那么清除浏览器cookie和缓存。它对我有用。【参考方案2】:

如果你尝试

chmod -R gu+w 存储

chmod -R guo+w 存储

php 工匠缓存:清除

还是不行。

你有两种方法:

    禁用您的 SELinux(我真的不推荐这种方式,除非您正在接受培训或学习)

    为 Apache Web 服务器配置 SELinux 策略

我想分解配置 selinux 策略的每个步骤 假设:您已经安装了所有数据库,如 mysql、postgresql 或其他数据库。你已经安装了网络服务器

    使用命令“yum提供/usr/sbin/semanage”安装semanage 使用命令“yum install -y policycoreutils-python”安装 policycoreutils-python 创建策略:

一个。 sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html/webapp(/.*)?"

b. sudo semanage fcontext -a -t httpd_log_t "/var/www/html/webapp/logs(/.*)?"

c。 sudo semanage fcontext -a -t httpd_cache_t "/var/www/html/webapp/cache(/.*)?"

    允许读写访问:

一个。 sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/webapp/storage(/.*)?"

访问您的网络应用程序

b. restorecon -Rv /var/www/html/webapp

【讨论】:

【参考方案3】:

chmod -R gu+w 存储

chmod -R guo+w 存储

php 工匠缓存:清除

这适用于我的 laravel 8 应用程序。

【讨论】:

与@geneowak 相同。删除重复的遮阳篷或添加更多内容!【参考方案4】:

为文件夹会话提供 777 对我有用。

【讨论】:

请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。 这不是定义 777 权限的好方法。这对您的应用程序和系统构成安全风险。请阅读此答案:askubuntu.com/questions/20105/…

以上是关于Laravel:file_put_contents() 无法打开流:会话文件夹的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:file_put_contents() 无法打开流:会话文件夹的权限被拒绝

Laravel blade模板生成静态化file_put_contents方法

file_put_contents 不适用于 json laravel 和 php

Laravel 5.5:Storage::put,file_put_contents 错误:无法打开流:没有这样的文件或目录

Laravel 5 显示 ErrorException file_put_contents 无法打开流:没有这样的文件或目录

如果Laravel 报错 file_put_contents(): failed to open stream