具有 laravel 权限的 PHP Beanstalk 在存储/框架/缓存上被拒绝

Posted

技术标签:

【中文标题】具有 laravel 权限的 PHP Beanstalk 在存储/框架/缓存上被拒绝【英文标题】:PHP Beanstalk with laravel permission denied on storage/framework/cache 【发布时间】:2016-02-15 21:27:08 【问题描述】:

我已经使用 Amazing Beanstalk 部署了我的 Laravel 5.1 应用程序,经过反复使用,我最终得到了这个错误。

"file_put_contents(/var/app/current/storage/framework/cache/d4/d7/d4d77eddeb64100f6da8f8b601a4631b): failed to open stream: Permission denied"

在我的 .ebextensions 配置文件中,我尝试将此命令添加到部署中,但它并没有解决问题,因为文件似乎是在部署后在浏览站点时创建的。

container_commands:
  "02-chmod-storage":
    command: "cd /var/app/ondeck;  chmod -R 777 storage"

我怎样才能永久解决这个问题?

【问题讨论】:

【参考方案1】:

应该这样做:

commands:
  create_post_dir:
    command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post"
    ignoreErrors: true
files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_chmod_storage.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      . /opt/elasticbeanstalk/support/envvars
      cd $EB_CONFIG_APP_CURRENT
      su -c "chmod -R 777 storage" $EB_CONFIG_APP_USER

【讨论】:

【参考方案2】:

尝试在 /storage 上设置 ACL 权限,允许 rootwebapp(或正在运行的 Web 服务器的用户名)进行 rwx 访问:

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_setfacl_storage.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      echo "Setting ACL permissions for /storage..."
      setfacl -Rdm u:root:rwx,u:webapp:rwx /var/app/current/storage
      setfacl -Rm u:root:rwx,u:webapp:rwx /var/app/current/storage

【讨论】:

以上是关于具有 laravel 权限的 PHP Beanstalk 在存储/框架/缓存上被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

嵌套的 foreach 循环使用 if 条件创建重复记录 - PHP Laravel 8

Laravel 8 无法清除缓存。确保您具有适当的权限

通过 eloquent 具有子项和权限的 Laravel 菜单

laravel-如何在 5.1 中使用 zizaco 获得具有所有角色和所有权限的用户?

Laravel 5.7 中的“无法清除缓存。请确保您具有适当的权限”

Apache,PHP,MySQL,PDO,权限被拒绝,laravel