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?

Zabs
fuente
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

Somy A
fuente
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
104

Usé este comando para activar el trabajo cron para esto.

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

en el servidor de godaddy y funciona bien.

Pank
fuente
2
¿Qué -qsignifica?
Bhavik Shah
4
@BhavikShah Según php.net/manual/en/features.commandline.options.php , -qes para el modo silencioso, suprime la salida del encabezado HTTP
William
@William Gracias. Entendido.
Bhavik Shah
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

k102
fuente
¿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

Emmanuel
fuente
16

Esta es la forma:

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

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

/usr/bin/php -q /home/username/public_html/scriptname.php
Mike Volmar
fuente
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
BenKennish
fuente
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.

Lakin Mohapatra
fuente
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

Sajjad
fuente
2

Sugerido por expertos.

/usr/local/bin/php /home/username/public_html/path/to/cron/script
Ali Akram
fuente
1

En realidad, es muy simple,

php -q /home/username/public_html/cron/cron.php
Dushyanth Kandiah
fuente
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.

Anjana Silva
fuente