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

chown -R $user:www-data storage命令在Heroku bash中不生效如何处理?

问题原因

Heroku的dyno使用临时易失性文件系统,且默认运行PHP服务的用户为动态生成的非特权用户,你执行chown -R $user:www-data storage失败主要有两个核心原因:

  1. Heroku默认没有给普通用户开放sudo权限,你没有修改文件所有者的权限,所有chown类修改所有者的操作都会被拒绝
  2. 就算你临时修改成功,只要dyno重启、重新部署,所有文件系统的变更都会被重置,手动执行chown没有实际意义

解决步骤

针对Laravel 7 + PHP 7.4在Heroku的storage目录权限问题,按以下步骤操作即可:

  • 确认项目根目录下的Procfile内容正确,示例如下:
    # 用Apache的场景
    web: vendor/bin/heroku-php-apache2 public/
    # 用Nginx的场景替换为下面的内容
    # web: vendor/bin/heroku-php-nginx public/
    
  • 在项目根目录的composer.json中添加部署后自动执行的权限配置钩子:
    {
      "scripts": {
        "post-install-cmd": [
          "chmod -R 775 storage",
          "chmod -R 775 bootstrap/cache",
          "php artisan optimize:clear"
        ]
      }
    }
    
  • 将以上两处修改提交到代码仓库后重新部署即可,不需要手动进入bash执行权限修改命令,Heroku官方PHP buildpack会自动保证运行进程对storage目录有读写权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:06:02