2012-12-07 143 views
17

我在Heroku上部署了一个PHP应用程序,但我似乎无法找到Apache错误日志。使用命令$heroku logs我似乎只得到apache访问日志。于是一帮送200 OK等,但在本地投入的错误日志中没有错误信息,如“PHP致命错误:等等等等Heroku中的错误日志

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

我觉得我忽略了一些明显的东西,但我似乎无法找到解决方案。

+0

想知道这个我自己。如果你发现了,请给出答案。 – bonez

回答

5

大量实验后,它看起来像你需要在php.ini 注释掉error_log并确保log_errors = on ..这应该输出你的错误到stderr在Heroku的logplex可以拿起流,然后用监控heroku logs --tail ..我启动了一个heroku facebook应用程序,并查看了他们的phpinfo()并复制了设置。

+0

在你看来,所以我只需要在我的php.ini中设置'log_errors = On'?它不适用于我.. – fain182

+0

您是否也评论过error_log作为答案的建议? – bonez

0

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

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

0

尝试增加:

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

到PHP页面的最顶端/应用

+0

这不起作用 –

+0

真的吗?我在我的日志中看到这个: “Wed Feb 06 18:51:35 2013”​​[error] [client 10.44.51.101] PHP解析错误:语法错误,第5行/app/www/index.php中的意外T_STRING “ 这不是OP想要的吗? – joshbirk

+0

测试代码只是: <?php error_reporting(E_ALL); ini_set(“display_errors”,1); 明显的错误在这里 ?> 我部署到Heroku,没有配置更改 - 然后运行heroku登录后index.php。 – joshbirk

1

我们不得不这样在bin加入到我们的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设置。