Exécuter un fichier PHP dans une tâche cron à l'aide de CPanel


102

J'essaie juste d'exécuter un script PHP en utilisant un travail cron dans CPanel - est-ce la syntaxe correcte:

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

Je ne reçois aucune notification par e-mail indiquant qu'un cron a été terminé, dois-je faire quelque chose de spécifique avec le fichier PHP?


25
Je pense que c'est assez pertinent vu que de nombreux projets sont hébergés sur Cpanel, et il faudrait savoir comment exécuter des tâches cron si besoin est
William

8
Si cPanel n'est pas autorisé sur Server Fault ou Stack Overflow, où devraient être les questions à ce sujet?
soufre

9
assez ironique que cette question ait été classée comme «hors sujet» pour StackOverflow, mais c'est la question la plus active que j'aie jamais eue ici ... J'espère que cela a aidé les autres :)
Zabs

Merci @Tatu Ulmanen Cela fonctionne pour moi!
Tushar Rmesh Saindane

Réponses:


66

Dans le système crontab:

  • /usr/bin/phpest le chemin binaire php (différent dans certains systèmes ex: freebsd /usr/local/bin/php, Linux: /usr/bin/php)
  • /home/username/public_html/cron/cron.php devrait être le chemin de votre script php
  • /dev/null devrait être une sortie cron, ex: /home/username/stdoutx.txt

Ainsi, vous pouvez surveiller votre cron en visualisant la sortie cron /home/username/stdoutx.txt


1
J'utilise maintenant et cela fonctionne mais je ne reçois aucune notification par e-mail. Des idées pourquoi pas? php /home/username/public_html/cron/cron.php note J'ai dû mettre la ligne suivante en haut du script PHP #! / usr / bin / php -q
Zabs

Si vous voulez que cronjob vous envoie des e-mails, vous devez utiliser php mail (), je ne pense pas que cronjob a un système de messagerie automatique, à moins que vous n'utilisiez le script shell ou php.
Somy A

1
Lorsque je clique sur l'onglet "cronjobs" dans cPanel, il y a deux cases sur la page - une pour la commande que vous souhaitez exécuter, et une autre pour l'adresse e-mail à laquelle vous voulez que la sortie soit envoyée. Ceci est dans cPanel 11.
user3640967

2
Quelle sera la commande complète? Je veux dire une commande complète en une seule ligne avec toutes les options.
Auj

@SomyA, pourriez-vous me dire la commande pour exécuter le fichier de script java.
Narender Reddy


29

>/dev/null arrête cron d'envoyer des mails.

en fait, à mon avis, il est préférable de créer un phpscript lui-même pour se soucier de sa journalisation plutôt que de simplement envoyer quelque chose à cron


puis-je vous demander comment vous faites cela? CronTabs ne produit-il pas de toute façon quelque chose? Je fais aussi >/dev/null 2>&1à la fin ...
ThomasK

@ThomasK si vous faites une tâche comme celle- /path/to/file.php > /dev/nullci, ça va être silencieux.
k102

19

C'est le moyen le plus simple:

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

Et si vous souhaitez enregistrer la sortie du script dans un fichier, ajoutez ceci à la fin de la commande:

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


16

Ceci est le chemin:

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

11

Cette ligne cron a fonctionné pour moi sur hostgator VPS en utilisant cpanel.

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

10

J'ai eu des problèmes avec / usr / bin / php sur CPanel car il est compilé en tant que binaire "cgi-fcgi" et non "cli". Essayez d'utiliser / usr / local / bin / php ou, comme c'est le premier dans le chemin de toute façon, utilisez simplement 'php' à la place:

php /path/to/script.php

Si vous souhaitez exécuter le script en tant qu'exécutable, donnez-lui + x perms et utilisez ce qui suit comme première ligne du script:

#!/usr/bin/env php

6

J'espère que votre problème vient également du binaire path & php. Si vous avez corrigé le chemin selon les réponses plus anciennes, veuillez utiliser php-cli au lieu de la commande php lors de l'exécution de la tâche cron.

Il est peut-être possible de php_sapi_name()ne pas revenir cli. Il renvoie quelque chose d'autre comme cgi-fcgietc.

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

J'espère que cela aidera.


3

Cela fonctionne bien et envoie également un e-mail:

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

Les deux commandes suivantes fonctionnent également correctement mais n'envoient pas de courrier électronique:

/ usr / bin / php -f / home / Identique à ci-dessus

php -f / home / Identique à ci-dessus


2

Suggéré par des experts.

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


0

Pour le travail Cron Multi PHP spécifique au domaine , procédez comme suit,

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

Dans l'exemple ci-dessus, remplacez «ea-php56» par la version PHP attribuée au domaine que vous souhaitez utiliser.

J'espère que cela aide quelqu'un.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.