Журналы ошибок PHP в Heroku
У меня есть приложение PHP, развернутое на Heroku, но я не могу найти журнал ошибок apache. Используя команду $heroku logs
, я, кажется, получаю только журналы доступа apache. Таким образом, куча GET 200 OK и т.д., Но нет информации об ошибке, которая помещается в журнал ошибок локально, например "PHP Fatal error: blah blah"
Где я могу получить доступ к этим журналам ошибок на Heroku или как сообщить приложению, чтобы они записывали в журнал Heroku, как это делает локальный журнал ошибок?
Мне кажется, что я пропускаю что-то очевидное, но я не могу найти решение.
Ответы
Ответ 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/приложение