You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10+Vue部署IIS服务器遇fopen权限拒绝错误求助

Laravel 10 API在IIS上的缓存权限问题修复方案

问题重现

遇到的错误信息:

production.ERROR: fopen(D:\Projects\TestProject\storage\framework/cache/data/e9/7d/e97d811f085318637cdcda703b63e4dc6269d1c3): 
Failed to open stream: Permission denied {"exception":"[object] (ErrorException(code: 0): fopen(D:\\Projects\\TestProject\\storage\\framework/cache/data/e9/7d/e97d811f085318637cdcda703b63e4dc6269d1c3): 
Failed to open stream: Permission denied at D:\\Projects\\TestProject\\vendor\\laravel\\framework\\src\\Illuminate\\Filesystem\\LockableFile.php:69)

已尝试给storage/framework/cache/data文件夹赋予IUSR、IIS_IUSRS完全权限,但问题依旧。

修复方案

  • 检查应用程序池身份权限
    IIS应用程序池默认可能使用ApplicationPoolIdentity而非内置用户组,需将该身份添加到storage文件夹的权限列表:

    1. 打开IIS管理器,找到对应网站的应用程序池,进入「高级设置」查看「标识」。
    2. 右键storage文件夹→属性→安全→编辑→添加,输入应用程序池身份格式(如IIS AppPool\你的应用程序池名称),赋予完全控制权限,并勾选「将权限应用到子对象和文件」。
  • 强制递归应用权限
    确保权限覆盖所有子文件和目录,避免旧文件权限残留:

    1. 右键storage文件夹→属性→安全→高级。
    2. 勾选「替换所有子对象权限条目为该对象的可继承权限条目」,点击应用并确认。
  • 清除缓存并重置权限
    手动删除storage/framework/cache下的所有文件,或在命令行执行:

    php artisan cache:clear
    

    执行命令时需确保使用应用程序池对应的身份,避免生成的新文件权限异常。

  • 切换缓存驱动(可选)
    若文件缓存权限问题反复出现,可改用Redis或数据库缓存规避文件系统权限限制:

    1. 修改.env文件:CACHE_DRIVER=redis(需提前配置Redis扩展)或CACHE_DRIVER=database。
    2. 若使用数据库驱动,执行php artisan cache:table生成缓存表,再执行迁移。
  • 验证IIS读写权限配置
    确认网站的「处理程序映射」中,PHP处理程序已启用「读取」和「写入」权限;同时检查「请求筛选」未限制对storage文件夹的访问。

内容的提问来源于stack exchange,提问作者calin24

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 10:37:17