Heroku 中的 PHP 错误日志

Posted

技术标签:

【中文标题】Heroku 中的 PHP 错误日志【英文标题】:PHP Error Logs in Heroku 【发布时间】:2012-11-26 04:29:43 【问题描述】:

我在 Heroku 上部署了一个 php 应用程序,但我似乎无法找到 apache 错误日志。使用命令$heroku logs 我似乎只得到了 apache 访问日志。所以一堆 GET 200 OK 等,但是本地没有放入错误日志的错误信息,比如 'PHP Fatal error: blah blah'

我在哪里可以访问 Heroku 上的这些错误日志,或者我如何告诉应用程序像写入本地错误日志一样写入 Heroku 的日志?

我觉得我忽略了一些显而易见的事情,但我似乎找不到解决方案。

【问题讨论】:

我自己也在想这个。如果你发现了,请给出答案。 【参考方案1】:

经过大量实验,看来需要在php.ini中注释掉error_log 并确保log_errors = on .. 这应该将您的错误输出到stderr,heroku logplex 可以在其中接收流,然后使用heroku logs --tail 进行监控。我启动了一个heroku facebook 应用程序并查看了他们的phpinfo() 并复制了设置.

【讨论】:

在你看来,所以我只需要在我的 php.ini 中设置log_errors = On 吗?这对我不起作用..【参考方案2】:

尝试添加:

error_reporting(E_ALL);
ini_set("display_errors", 1);

到您的 PHP 页面/应用程序的最顶部

【讨论】:

真的吗?我在我的日志中看到:“Wed Feb 06 18:51:35 2013] [error] [client 10.44.51.101] PHP Parse error: syntax error, unexpected T_STRING in /app/www/index.php on line 5” 是这不是 OP 想要的吗? 测试代码就是: 我部署到 Heroku,没有配置更改 - 并且在点击 index.php 后运行 heroku 日志。 @joshbirk 的代码对我有用 - 我在 Heroku 日志中得到 2013-02-07T18:12:14+00:00 app[web.1]: [Thu Feb 07 18:12:14 2013] [error] [client 10.92.74.179] PHP Parse error: syntax error, unexpected T_STRING in /app/www/index.php on line 1 这实际上看起来是最简单的方法,因为它不需要 ini 文件或 buildpack hacking - 只需将其设置在包含所有内容的 PHP 文件中。【参考方案3】:

我们必须将它添加到我们的 buildpack 的 bin/compile 文件中:

cat >>boot.sh <<EOF
for var in \`env|cut -f1 -d=\`; do
  echo "PassEnv \$var" >> /app/apache/conf/httpd.conf;
done
touch /app/apache/logs/error_log
touch /app/apache/logs/access_log
touch /app/apache/logs/php_error.log
tail -F /app/apache/logs/error_log &
tail -F /app/apache/logs/access_log &
tail -F /app/apache/logs/php_error.log &
echo "Launching apache"
exec /app/apache/bin/httpd -DNO_DETACH
EOF

我们将 php.ini 和 https.conf 设置保留原样。

【讨论】:

【参考方案4】:

这与 Heroku 的部署方式无关,而与您的 PHP 配置有关。 error_log 指令管理它。

error_log 指令定义了应该记录脚本错误的文件的名称。该文件应可由 Web 服务器的用户写入。

【讨论】:

【参考方案5】:

我实现的 laravel 项目按问题查看错误

heroku 配置:设置 APP_DEBUG=true

再次访问应用程序,错误将显示在浏览器中

【讨论】:

以上是关于Heroku 中的 PHP 错误日志的主要内容,如果未能解决你的问题,请参考以下文章

Django 项目的 Heroku 日志丢失错误

部署到 Heroku 错误。提供日志

如何解决 Heroku 应用程序错误(heroku 日志 --tail)

我可以让 Heroku Logs 只返回概述错误的行吗?

将 ktor 应用程序部署到 Heroku 后出现日志错误

尝试在 Heroku 上部署我的不和谐机器人时,我的日志中不断出现此错误