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

如何在 AWS Elastic Beanstalk 上修改 Nginx 配置

如何在 AWS Elastic Beanstalk 上设置 HTTPS

如何在 AWS Elastic Beanstalk 上设置 HTTPS

如何在 AWS Elastic Beanstalk 中更改数据库配置

如何在 AWS Elastic Beanstalk 中选择特定平台?

如何使用 Elastic beanstalk 和 Dockerrun.aws.json 正确部署到 AWS?