Подтвердить что ты не робот

Журналы ошибок PHP в Heroku

У меня есть приложение PHP, развернутое на Heroku, но я не могу найти журнал ошибок apache. Используя команду $heroku logs, я, кажется, получаю только журналы доступа apache. Таким образом, куча GET 200 OK и т.д., Но нет информации об ошибке, которая помещается в журнал ошибок локально, например "PHP Fatal error: blah blah"

Где я могу получить доступ к этим журналам ошибок на Heroku или как сообщить приложению, чтобы они записывали в журнал Heroku, как это делает локальный журнал ошибок?

Мне кажется, что я пропускаю что-то очевидное, но я не могу найти решение.

4b9b3361

Ответ 1

После большого количества экспериментов, похоже, вам нужно прокомментировать error_log в php.ini и убедитесь, что log_errors = on.. это должно выводить ваши ошибки в stderr, где heroku logplex может забрать поток, а затем отслеживать с помощью heroku logs --tail.. Я запустил приложение facebook heroku и посмотрел их phpinfo() и скопировал настройку,

Ответ 2

Нам пришлось добавить это в наш 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 в основном как-есть.

Ответ 3

Это не относится к способу развертывания Heroku, но к вашей конфигурации PHP. Директива error_log управляет этим.

Директива error_log определяет имя файла, в котором должны регистрироваться ошибки script. Файл должен быть доступен для записи пользователем веб-сервера.

Ответ 4

Попробуйте добавить:

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

Наверх страницы PHP/приложение