Ir al contenido principal

Cómo depurar una tarea cron que falla (PHP y cURL)

Esta guía te enseña a descubrir por qué falla una tarea cron, guardando sus errores en un archivo de log, y a silenciar los correos que genera. Cubre crons con PHP (CLI) y con cURL. Está pensada para usuarios con conocimientos técnicos básicos.

1. Requisitos previos

  • Acceso a cPanel > Cron Jobs.

  • La ruta de tu script (en los ejemplos, /home/usuario/cron.tudominio.com/check.php).

2. Instrucciones paso a paso

Revisar los avisos por correo y el error_log

1. En Cron Jobs, configura el email de notificación: ahí llegará la salida de cada ejecución.

Captura de pantalla 1 de la guía
Captura de pantalla 2 de la guía

2. Comando básico de ejemplo:

/usr/local/bin/ea-php84 /home/usuario/cron.tudominio.com/check.php
Captura de pantalla 3 de la guía
Captura de pantalla 4 de la guía

3. Si falla, revisa el error_log en /home/usuario/.

Captura de pantalla 5 de la guía

Guardar los errores de PHP en un log

4. Cambia el comando para mostrar errores y guardarlos en un archivo:

/usr/local/bin/ea-php84 -d display_errors=On -d log_errors=Off 
/home/usuario/cron.tudominio.com/check.php >>
/home/usuario/cron.tudominio.com/cron_error.log 2>&1
Captura de pantalla 6 de la guía

5. Abre cron_error.log tras la siguiente ejecución.

Captura de pantalla 7 de la guía
Captura de pantalla 8 de la guía

Depurar un cron con cURL

6. Usa el modo detallado y guarda el resultado en un log:

curl -vL https://cron.tudominio.com/check.php >> 
/home/usuario/cron.tudominio.com/curl_debug.log 2>&1
Captura de pantalla 10 de la guía
Captura de pantalla 11 de la guía
Captura de pantalla 12 de la guía

7. Abre curl_debug.log para ver IP, cabeceras, SSL y código HTTP.

Captura de pantalla 13 de la guía
Captura de pantalla 14 de la guía

8. Cuando funcione, pasa al modo silencioso:

curl -sL https://cron.tudominio.com/check.php
Captura de pantalla 15 de la guía
Captura de pantalla 16 de la guía

Dejar de recibir correos

9. Añade al final del comando:

>/dev/null 2>&1
Captura de pantalla 9 de la guía

Qué significa cada parte

Parte

Significado

-d display_errors=On

Muestra errores solo en esta ejecución.

>> archivo.log

Añade la salida al final del archivo.

2>&1

Envía también los errores al mismo destino.

>/dev/null

Descarta la salida (no hay correos).

curl -v / -L / -s

Detallado / seguir redirecciones / silencioso.


3. Resultado esperado

Sabes por qué fallaba tu tarea cron y la tienes funcionando sin correos innecesarios.


4. Solución de problemas

Si: ¿Cómo compruebo que el cron se ejecuta a su hora?

file_put_contents('/home/usuario/cron.tudominio.com/log_ejecucion.txt', date('Y-m-d H:i:s') . " - Cron OK\n", FILE_APPEND);

Solución: Añade al inicio de tu script PHP una línea que registre la fecha:

Captura de pantalla 17 de la guía
Captura de pantalla 18 de la guía

Si: No recibo correos aunque el script se ejecuta.

Solución: Solo llega un correo si el script imprime algo (echo, print o un error).


5. Resumen y siguientes pasos

Has depurado tu tarea cron.

¿Ha quedado contestada tu pregunta?