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