如何在 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 错误的主要内容,如果未能解决你的问题,请参考以下文章