Dans notre serveur centos6. Je voudrais exécuter un script php dans le travail cron en tant qu'utilisateur Apache, mais malheureusement, cela ne fonctionne pas.
voici l'édition de crontab (crontab -uapache -e)
24 17 * * * php /opt/test.php
et voici le code source du fichier "test.php" qui fonctionne bien avec "Apache" en tant que propriétaire.
<?php exec( 'touch /opt/test/test.txt');?>
J'essaie de remplacer php par le chemin complet de php (/ usr/local/php/bin/php) mais cela ne fonctionne pas
Merci d'avance, aidez-moi s'il vous plaît
Cron est un service de planification basé sur le temps dans les systèmes d'exploitation informatiques de type Linux/Unix. Les tâches cron sont utilisées pour planifier l'exécution périodique de commandes. Vous pouvez configurer des commandes ou des scripts, qui seront exécutés de manière répétée à une heure donnée. Cron est l'un des outils les plus utiles sous Linux ou UNIX, comme les systèmes d'exploitation. Le service cron (démon) s’exécute en arrière-plan et vérifie en permanence le fichier /etc/crontab , /etc/cron. /* répertoires. Il vérifie également le répertoire /var/spool/cron/.
Dans l'exemple suivant, la commande crontab ci-dessous active automatiquement les tâches cron toutes les dix minutes:
*/10 * * * * /usr/bin/php /opt/test.php
Dans l'exemple ci-dessus, */10 * * * * indique quand la tâche doit avoir lieu. Le premier chiffre représente minutes - dans ce cas, toutes les "dix" minutes. Les autres chiffres représentent respectivement heure , jour , mois et jour de la semaine .
*
est un caractère générique, qui signifie "à chaque fois" .
Commencez par rechercher votre [~ # ~] php [~ # ~] en tapant en ligne de commande:
whereis php
La sortie devrait être quelque chose comme:
php:/usr/bin/php /etc/php.ini /etc/php.d/usr/lib64/php/usr/include/php/usr/share/php /usr/share/man/man1/php.1 .gz
Spécifiez correctement le chemin complet dans votre commande.
crontab -e
Pour voir ce que vous avez dans crontab .
Pour quitter l'éditeur vim sans enregistrer, cliquez simplement sur:
Shift+:
Et puis tapez q!
J'ai eu le même problème ... Je devais l'exécuter en tant qu'utilisateur.
00 * * * * root /usr/bin/php /var/virtual/hostname.nz/public_html/cronjob.php
Vous devrez peut-être exécuter le travail cron en tant qu'utilisateur disposant des autorisations nécessaires pour exécuter le script PHP. Essayez d'exécuter le travail cron en tant que root, à l'aide de la commande runuser
(man runuser
). Ou créez un système crontable et exécutez le script PHP en tant qu'utilisateur autorisé, comme décrit par @Philip.
Je fournis une réponse détaillée sur l'utilisation de cron dans cet article stackoverflow.
Comment écrire un cron qui exécutera un script tous les jours à minuit?