Elastic Beanstalk使用.config文件设置phpmyadmin配置文件权限不生效
配置失效原因
container_commands执行阶段,Elastic Beanstalk 还未完成新版本代码的切换,/var/app/current此时指向的是部署前的旧版本代码,等所有container_commands执行完成后,系统才会把存放在/var/app/staging的新版本代码替换到/var/app/current路径下,修改旧版本路径的权限自然不会生效。- 如果你使用的是 Amazon Linux 2 版本的 Elastic Beanstalk 环境,
/opt/elasticbeanstalk/hooks/路径下的传统钩子已经被官方弃用,你写的 post 部署钩子根本不会被触发执行。
解决方法
方案1:直接修改 staging 目录文件权限(最简单)
直接在 container_commands 中修改 staging 目录下对应文件的权限,版本切换后会自动继承权限,修正后的 .ebextensions/phpdb.config 配置如下:
container_commands: 01_change_permissions: command: "chmod 0755 /var/app/staging/phpdb/config.inc.php" ignoreErrors: true
不需要加sudo,container_commands 默认以root权限执行。
方案2:使用兼容 Amazon Linux 2 的 post 部署钩子
如果需要在部署完全完成后执行权限修改操作,使用新版本的钩子逻辑即可:
- 在应用根目录下创建
.platform/hooks/postdeploy/文件夹 - 在该文件夹下新建
99_change_permissions.sh文件,内容如下:
#!/usr/bin/env bash chmod 0755 /var/app/current/phpdb/config.inc.php
- 本地给这个shell文件赋予755权限后再打包部署,不需要再在
.ebextensions里配置files字段创建旧路径的钩子。
额外说明
phpMyAdmin的config.inc.php仅需读权限即可正常运行,你也可以把权限改成0644,不需要可执行权限,安全性更高。
内容的提问来源于stack exchange,提问作者Yidel Braver
相关产品推荐
相关产品推荐

