web-dev-qa-db-fra.com

Configurez une tâche cron pour le script PHP dans Ubuntu 16.04 & PHP 7.0

Cela me rend folle de vouloir installer une tâche cron pour le script PHP dans Ubuntu 16.04.

J'entre cette commande en terminal

$ crontab -e

Ensuite, je choisis nano editor, qui est recommandé par Ubuntu. Ensuite, j'entre dans la ligne de frappe dans cela. Ensuite, j'appuie sur Ctrl + C pour demander à Y/N de sauvegarder. J'appuie sur Y et F2 pour fermer.

* */2 * * * root php /var/www/html/script.php

d'autres essais sont,

* */2 * * * /var/www/html/script.php
* */2 * * * root /var/www/html/script.php

Après avoir redémarré cron en utilisant la commande ci-dessous.

Sudo /etc/init.d/cron restart

Ensuite, je vérifie que la liste de variables de contrôle crontab -l indique qu'aucun travail cron n'est défini pour l'utilisateur root.

J'ai essayé de créer directement un fichier crontab.txt dans le répertoire cron.hourly/cron.d avec l'une des lignes ci-dessus.

J'ai essayé de nombreux forum et tout dit crontab -e puis entrez ou créez un fichier crontab dans le répertoire cron. Rien ne m'aide. Je me gratte la tête.

Quelle est la bonne façon de créer cronjob pour un script php dans Ubuntu 16.04 & php version 7.0

1
Naga

crontab -e ne devrait pas avoir la partie root, qui spécifie le nom d'utilisateur (crontab -e édite déjà la crontab d'un utilisateur spécifique).

Si vous voulez exécuter en tant que root, faites Sudo crontab -e, et utilisez:

* */2 * * * php /var/www/html/script.php

ou créez un fichier dans /etc/cron.d contenant:

* */2 * * * root php /var/www/html/script.php
2
muru

Crontab est utilisé comme ceci: crontab -u <username> -e. -u <username> part peut être omis pour l'utilisateur actuel. Si vous voulez l'utiliser pour l'utilisateur root, vous pouvez utiliser Sudo crontab -e. Ensuite, vous tapez vos arrangements de planification * */2 * * * et le dernier argument de la ligne est la ligne d'exécution du script. Lorsque vous avez terminé, crontab écrit la sortie, que le travail ait été installé avec succès ou non. Il y a certaines choses que vous devez considérer à propos du dernier argument.

  1. Avez-vous php-cli installé? Sinon php ne fonctionnera pas en ligne de commande. (Sudo apt-get install php7-cli)
  2. Lorsque vous avez installé php-cli, assurez-vous que crontab trouve l'exécutable php. crontab n'a pas nécessairement le même $ PATH. Tapez which php et utilisez le chemin complet dans crontab * */2 * * * /usr/bin/php /var/www/html/script.php. Bien /usr/bin doit être dans le chemin de crontab. Cette étape n'est probablement pas nécessaire, mais cela ne fait pas mal.

Apache n'a rien à voir avec vos scripts crontab car les scripts php sont exécutés à partir de la ligne de commande dans ce cas. Vous pouvez avoir des problèmes avec le script PHP si vous utilisez des données liées à Apache dans votre script, qui ne sont pas accessibles en ligne de commande.

1
nobody