Heroku中的PHP错误日志

时间:2012-12-07 23:12:32

标签: php heroku error-logging

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

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

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

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

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

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设置。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

尝试添加:

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

到PHP页面/ app的最顶层

答案 4 :(得分:0)

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

heroku config:set APP_DEBUG = true

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