【以下的问题经过翻译处理】 我有一个自动扩展组,在启动模板中设置了以下EFS:
sudo yum install -y amazon-efs-utils
sudo mount -t efs fs-0f13ef1378a09e59c:/ /efs
sudo mount -t efs fs-0f13ef1378a09e59c:/html /var/www/html
sudo mount -t efs fs-0f13ef1378a09e59c:/test /home/test
# Reference: https://stackoverflow.com/questions/57260276/using-same-aws-efs-to-share-multiple-directories
我已经按照此指南设置了PHP8.0和Apache:https://gist.github.com/syad9000/dbc855a11b306cb454b283a83fe479f2。这会创建源AMI,我使用它来生成两个EC2实例,在自动扩展组中使用EFS来同步/var/home/html/test文件夹和/home/test文件夹。我已经设置了Apache,将端口80服务于/var/www/html/test文件夹。
我使用ALB将请求重定向到已创建的目标组的合格域名。我可以很好地提供诸如/index.html或/index.php之类的文件。PHP代码在浏览器中工作。
我的问题是,我正在尝试创建一个API,它将基于GET命令运行存储的shell脚本。例如,我发出一个GET请求到/index.php?build=true。我的PHP脚本正在尝试执行/var/www/html/test/build.sh脚本。
我收到一个错误消息:
<br />
<b>Warning</b>: file_put_contents(/var/www/html/test/.build/error.log): Failed to open stream: Permission denied in <b>/var/www/html/test/_resources/php/functions.php</b> on line <b>11</b><br />
当我通过控制台登录时,我可以无错误运行脚本。当我尝试使用Web浏览器或curl运行时,我会遇到以上错误。当我以 apache 用户身份登录控制台并使用的时候是这样的:
sudo su -s /bin/bash -c '/var/www/html/build.sh' apache
Apache 配置中的权限问题源于哪里?是 EFS 还是 ALB?