У меня есть приложение PHP, развернутое на Heroku, но я не могу найти журнал ошибок 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
.. Я запустил приложение facebook heroku и посмотрел их phpinfo () и скопировал настройку.
Мы должны были добавить это в наш 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 в основном как есть.
Это не относится к способу развертывания Heroku, но к вашей конфигурации PHP. Директива error_log
управляет этим.
Директива error_log
определяет имя файла, в котором должны регистрироваться ошибки сценария. Файл должен быть доступен для записи пользователем веб-сервера.
Попробуйте добавить:
error_reporting(E_ALL); ini_set("display_errors", 1);
На самом верху страницы PHP / приложения