如何在 AWS Elastic Beanstalk Docker 容器中记录 PHP 错误
Posted
技术标签:
【中文标题】如何在 AWS Elastic Beanstalk Docker 容器中记录 PHP 错误【英文标题】:How to log PHP errors in an AWS Elastic Beanstalk Docker container 【发布时间】:2017-06-29 07:57:34 【问题描述】:我有一个要部署到 AWS Elastic Beanstalk 的 php Docker 容器。我对 Docker 和 EB 比较陌生,所以还在学习。我正在尝试将 php 错误记录到 /var/log/php_error.log 最好。
在 php.ini 中我已经设置了
log_errors = On
error_log = /var/log/php_error.log
然后我加载了一个带有error_log("Hi")
的页面,但是当我eb ssh
进入服务器时,没有创建 php_error.log 文件。
我认为这是一个权限问题。 PHP 用户(www-data)无权写入 root 拥有的日志目录。我从未设置过 root 密码,也找不到任何有关如何获得 sudo 权限或如何正确设置权限以使其正常工作的文档。我怀疑它可以放在我的 Dockerfile 中,但我对 Docker 还是新手,所以不知道该怎么做。
可能出于相同或相似的原因,我无法使用 PHP 写入任何文件,例如执行 file_put_contents("write.txt","hi")
会出现权限错误。
任何提示将不胜感激。
【问题讨论】:
【参考方案1】:我最近不得不这样做,这就是我所做的。
使用 .ebextensions 您可以更改几乎任何您希望的配置,包括 php.ini 中的内容。在您的 EB 部署 zip 文件中,确保您有一个名为 .ebextensions 的文件夹以及 .config,其中包含类似于以下示例的内容。
这是我的 PHP 特定扩展的示例:
files:
"/etc/php.d/uploads.ini" :
mode: "000644"
owner: root
group: root
content: |
upload_max_filesize = 128M
post_max_size = 128M
error_log = /tmp/php_errors.log
与您类似,我在我知道它会被命中的地方放了一个随机的 error_log() 语句,并且该文件已创建并填充了我所期望的内容。
希望这会有所帮助!
【讨论】:
以上是关于如何在 AWS Elastic Beanstalk Docker 容器中记录 PHP 错误的主要内容,如果未能解决你的问题,请参考以下文章