我在 Heroku 上部署了一个 PHP 应用程序,但我似乎无法找到 apache 错误日志。使用该命令$heroku logs
我似乎只获得了 apache 访问日志。所以一堆 GET 200 OK 等,但没有错误信息被放入本地的错误日志中,例如'PHP Fatal error: blah blah '
我在哪里可以访问 Heroku 上的这些错误日志,或者我如何告诉应用程序像写入本地错误日志一样写入 Heroku 的日志?
我觉得我忽略了一些明显的东西,但我似乎找不到解决方案。
我在 Heroku 上部署了一个 PHP 应用程序,但我似乎无法找到 apache 错误日志。使用该命令$heroku logs
我似乎只获得了 apache 访问日志。所以一堆 GET 200 OK 等,但没有错误信息被放入本地的错误日志中,例如'PHP Fatal error: blah blah '
我在哪里可以访问 Heroku 上的这些错误日志,或者我如何告诉应用程序像写入本地错误日志一样写入 Heroku 的日志?
我觉得我忽略了一些明显的东西,但我似乎找不到解决方案。
经过大量实验后,您似乎需要error_log
在 php.ini 中注释掉并确保log_errors = on
.. 这应该将您的错误输出到 stderr,heroku logplex 可以在其中接收流,然后使用heroku logs --tail
.. 进行监视。我启动了 heroku facebook app 并查看了他们的 phpinfo() 并复制了设置。
尝试添加:
error_reporting(E_ALL);
ini_set("display_errors", 1);
到您的 PHP 页面/应用程序的最顶部
我们必须将它添加到 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 设置保持原样。
这与 Heroku 的部署方式无关,而是与您的 PHP 配置有关。该error_log
指令管理它。
该error_log
指令定义了应该记录脚本错误的文件的名称。该文件应该可由 Web 服务器的用户写入。
我实现了我的 laravel 项目,按问题查看错误
heroku 配置:设置 APP_DEBUG=true
再次访问应用程序,错误将显示在浏览器中