subir - Registros de error de PHP en Heroku
notice: no procfile, using ''web: heroku-php-apache2''. (4)
Tengo una aplicación PHP implementada en Heroku, pero parece que no puedo encontrar el registro de errores de apache. Al usar el comando $heroku logs
parece que solo obtengo los registros de acceso de apache. Así que un montón de GET 200 OK, etc., pero no hay información de error que se coloque localmente en el registro de errores, como ''Error Fatal de PHP: blah blah ''
¿Dónde accedo a estos registros de errores en Heroku, o cómo le digo a la aplicación que escriba en el registro de Heroku como lo hace con el registro de errores local?
Siento que estoy pasando por alto algo obvio pero parece que no puedo encontrar una solución.
Después de mucha experimentación, parece que necesitas comentar error_log
en php.ini y asegurarte de que log_errors = on
.. esto debería dar salida a tus errores a stderr donde heroku logplex puede recoger el flujo, luego monitorear con heroku logs --tail
.. Puse en marcha una aplicación de Facebook de heroku y miré su phpinfo () y copié la configuración.
Eso no está relacionado con la forma de implementación de Heroku, sino con la configuración de PHP. La directiva error_log
maneja.
La directiva error_log
define el nombre del archivo donde se deben registrar los errores de script. El archivo debe ser escribible por el usuario del servidor web.
Intenta agregar:
error_reporting(E_ALL);
ini_set("display_errors", 1);
En la parte superior de tu página / aplicación PHP
Tuvimos que agregar esto a nuestro buildpack en el archivo 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
Dejamos la configuración de php.ini y https.conf casi como está.