我在 AWS Elastic Beanstalk 上运行 PHP Web 应用程序,并且一直在尝试诊断用户升级到 PHP 8 后遇到的一些看似随机(罕见)的问题。
在本地主机上,我会打开错误报告以进行诊断,但在生产中该功能被禁用(出于安全原因),但我仍然希望能够记录 PHP 服务器错误并可供我下载。
Elastic Beanstalk 允许我下载完整日志或最后 100 行。但都不包括 PHP 错误或警告。我实际上不需要将它们推送到 CloudWatch,只需要能够从 AWS EB 控制台轻松访问它们。(我只为应用程序运行一个 EC2 实例,但不想通过 SSH 或类似方式进入服务器。)
如果我检查 PHP 信息,它会被设置为日志错误,并提供日志位置:
我可以将配置文件放在应用程序的 .ebextensions 文件夹中,但似乎无法让它包含最后 100 行中的 PHP 日志或我可以从控制台下载的压缩日志文件包。
答案1
您可以使用配置文件配置您的环境以将自定义日志附加到现有的尾随日志。
您可以将 AWS Elastic Beanstalk 配置文件 (.ebextensions) 添加到 Web 应用程序的源代码中,以配置您的环境并自定义其中包含的 AWS 资源。配置文件是 YAML 或 JSON 格式的文档,文件扩展名为 .config,您可以将其放在名为 .ebextensions 的文件夹中并部署到应用程序源包中。
创建一个新的配置文件,例如server-logs.config
在配置文件中定义以下内容以将服务器错误日志包含在您的应用程序中。
files:
"/opt/elasticbeanstalk/tasks/taillogs.d/app_error.conf" :
mode: "000755"
owner: root
group: root
content: |
/var/log/php-fpm/www-error.log
下次您请求新日志时,服务器日志将显示在此行下方
----------------------------------------
/var/log/php-fpm/www-error.log
----------------------------------------