Tache Crontab demarrer dans

Bonjour à tous,

j’ai créé un script PHP, qui fonctionne lorsque je l’exécute:

  • depuis un navigateur web
  • depuis ma debian en me plaçant dans /var/www/ss php5 -f import-server.php

Par contre comment dire dans crontab qu’on veut démarrer le script dans "/var/www/ss"
Car si j’exécute mon script (manuellement) dans un autre répertoire j’ai des erreurs

Merci d’avance pour vos réponses.

guigui69

Bonjour,

tu peux indiquer l’utilisateur qui doit exécuter le script dans la crontab et tu dois indiquer le chemin absolu vers ton script dans la commmande (aussi le fichier doit se terminer par un #):

30 1 * * * www-data php5 -f /var/www/ss/import-server.php
#

==> tous les jours à 1h30 l’utilisateur www-data exécute la commande ci-dessous depuis le répertoire /var/www/ss

php5 -f /var/www/ss/import-server.php

J’espère que ça t’a aidé.

Bonjour,

j’ai rajouté ceci dans le contrab:

0 5 * * * www-data php5 -f /var/www/ss/import-server.php#

c’est bien comme cela ? A avec cette ligne il sais qu’il doit lancer le script depuis /var/www/ss/ ?

Tout à fait, mais le # est à la dernière ligne, là il ne sert à rien. Ton script sera exécuté toutes les 5h (à partir de 0h00) par l’utilisateur www-data qui appelera php5 (le programme) pour exécuter import-server.php
Tu peux vérifier que ton script a correctement été appelé en grépant le syslog !

grep "/var/www/ss/import-server.php" /var/log/syslog

tu peux même loguer le résultat :

0 5 * * * www-data php5 -f /var/www/ss/import-server.php ; if [ "$?" = 0 ] then echo "$(date) dernière exécution du script import-server.php exécutée sans problème" >> /var/www/ss/import-server.log ; else echo "$(date) le script import-server.php ne s'est pas exécuté correctement" /var/www/ss/import-server.log ; fi

les puristes diront qu’il est plus propre de faire un script sh dans un autre fichier et de l’appeler ensuite…

Oups, c’est pas ça que je veux. je veux que le script s’exécute tout les jours à 5h du matin .

A quelle endroit je doit mettre le 5 alors ? :frowning:

Ne t’inquiète pas, c’est vincensan qui se trompe ;-). Tu peux vérifier ici : http://www.crontab.guru.

Effectivement, je me suis gourré, pour l’exécution toutes les 5h c’est :
0 /5 * * * www-data php5 -f /var/www/ss/import-server.php

Je ne sais pas j’ai cru voir un slash !
J’ai dû penser très fort à une crontab que j’ai faite hier (toutes les 3h)…
Désolé pour la frayeur…

Bonjour à tous,

je reviens sur mon sujet.

j’ai ajouté ce ci dans le crontab -e:

0 5 * * * www-data php5 -f /var/www/ss/import-server.php ; if [ “$?” = 0 ] …

Mais cela ne s’exécute pas. (Dans mon script PHP j’enregistre dans ma base chaque execution et je n’ai rien depuis aout (lors de mes test manuel)

faut que peut etre que je teste dans le contrab -e une ligne peut etre moins compliqué non ?

Si ta tâche cron est un peu complexe (plus de 2~3 commandes), ça vaut le coup de faire un script, et tu appelles ensuite simplement le script depuis cron.