Ejecute un archivo PHP en un trabajo cron usando CPanel


102

Solo estoy tratando de ejecutar un script PHP usando un trabajo cron dentro de CPanel, ¿es esta la sintaxis correcta?

/usr/bin/php -q /home/username/public_html/cron/cron.php >/dev/null

No recibo ninguna notificación por correo electrónico que indique que se completó un cron, ¿debo hacer algo específico con el archivo PHP?


25
Creo que es bastante relevante ya que muchos proyectos están alojados en Cpanel, y se necesitaría saber cómo ejecutar trabajos cron si es necesario
William

7
Si cPanel no está permitido en Server Fault o Stack Overflow, ¿dónde deberían estar las preguntas al respecto?
azufre

8
bastante irónico que esta pregunta se clasificó como 'fuera de tema' para StackOverflow, pero es la pregunta más activa que he tenido aquí ... Espero que haya ayudado a otros :)
Zabs

Gracias @Tatu Ulmanen ¡A mí me funciona!
Tushar Rmesh Saindane

Respuestas:


66

En el sistema crontab:

  • /usr/bin/phpes camino php binario (diferente en algunos sistemas ex: FreeBSD /usr/local/bin/php, Linux: /usr/bin/php)
  • /home/username/public_html/cron/cron.php debería ser su ruta de script php
  • /dev/null debe ser una salida cron, por ejemplo: /home/username/stdoutx.txt

Entonces puede monitorear su cron viendo la salida cron /home/username/stdoutx.txt


1
Estoy usando esto ahora y funciona, pero no recibo ninguna notificación por correo electrónico. ¿Por qué no? php /home/username/public_html/cron/cron.php nota que tuve que poner la siguiente línea en la parte superior del script PHP #! / usr / bin / php -q
Zabs

Si quieres que cronjob te envíe correos electrónicos, debes usar php mail (), no creo que cronjob tenga un sistema de correo automático, a menos que uses shell scripting o php.
Somy A

1
Cuando hago clic en la pestaña "cronjobs" en cPanel, hay dos casillas en la página: una para el comando que desea ejecutar y otra para la dirección de correo electrónico a la que desea que se envíe la salida. Esto está en cPanel 11.
user3640967

2
¿Cuál será el mando completo? Me refiero al comando completo en una línea con todas las opciones.
2016

@SomyA, por favor, ¿podría decirme el comando para ejecutar el archivo de script java?
Narender Reddy


29

>/dev/null evita que cron envíe correos.

en realidad, en mi opinión, es mejor hacer un phpscript para que se preocupe por su registro en lugar de simplemente enviar algo a cron


¿Puedo preguntarte cómo haces eso? ¿No sale cronTabs a algo de todos modos? También lo hago >/dev/null 2>&1al final ...
ThomasK

@ThomasK, si haces una tarea como esta, /path/to/file.php > /dev/nullse quedará en silencio.
k102

19

Esta es la manera más fácil:

php -f /home/your_username/public_html/script.php

Y si desea registrar la salida del script en un archivo, agregue esto al final del comando:

>> /home/your_username/logs/someFile.txt 2>&1


16

Esta es la forma:

/usr/bin/php -q /home/username/public_html/yourfilename.php >/dev/null

11

Esta línea cron funcionó para mí en hostgator VPS usando cpanel.

/usr/bin/php -q /home/username/public_html/scriptname.php

10

He tenido problemas al usar / usr / bin / php en CPanel, ya que está compilado como un binario "cgi-fcgi" y no como "cli". Intente usar / usr / local / bin / php o, como es el primero en la ruta de todos modos, simplemente use 'php' en su lugar:

php /path/to/script.php

Si desea ejecutar el script como ejecutable, dele + x permisos y utilice lo siguiente como primera línea del script:

#!/usr/bin/env php

6

Espero que tu problema también sea con path & php binary. Si ha arreglado la ruta según las respuestas anteriores, use php-cli en lugar del comando php mientras ejecuta el trabajo cron.

Es posible php_sapi_name()que no regrese cli. Está devolviendo algo más como, cgi-fcgietc.

/usr/bin/php-cli -q /home/username/public_html/cron/cron.php >/dev/null

Espero que te ayude.


3

Esto funciona bien y también envía correos electrónicos:

/ usr / bin / php /home/xxYourUserNamexx/public_html/xxYourFolderxx/xxcronfile.php

Los siguientes dos comandos también funcionan bien pero no envían correo electrónico:

/ usr / bin / php -f / home / Igual que arriba

php -f / home / Igual que arriba


2

Sugerido por expertos.

/usr/local/bin/php /home/username/public_html/path/to/cron/script


0

Para el trabajo Cron Multi PHP específico del dominio , haga esto,

/usr/local/bin/ea-php56 /home/username/domain_path/path/to/cron/script

En el ejemplo anterior, reemplace "ea-php56" con la versión de PHP asignada al dominio que desea utilizar.

Espero que esto ayude a alguien.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.