bonjour,
Je suis occupé à créer un site pour un événement d'une ASBL et je butte sur l'exécution d'un simple script PHP via une tâche cron sur mon Manager.
Ce script sert à déplacer des images créées par des membres ou visiteurs (sorte de carte d'identité) vers un dossier backup (exemple : img_event/image_215.jpg > img_event_bck/image_215.jpg) via la fonction rename()
L'exécution du script en manuel (appel de la page via le navigateur) fonctionne bien. Je peux voir que mon dossier d'origine img_event est vidé et img_event_bck est rempli avec les images déplacées.
Depuis ce midi, j'ai enregistré une tâche Cron dans mon manager, à exécuter chaque heure.
Selon les logs, le Cron s'exécute bien, exit code 0, pas d'erreur et cela se fait en moins d'1 seconde.
Malgré cela, rien n'est déplacé !
Mes paramètres Cron OVH :
L'adresse du fichier commence bien par www/ dans les paramètres.
Ici le log donné par OVH
Bout de code pour faire lister le dossier et en copier ses fichiers sauf '.' '..' et 'index.html' :`$i = '0';
$ii = '0';
// Liste les fichiers en array
$files = scandir("./www/gc/imGC9BAKF4/");
// Dossiers source et destination
$source = "./www/gc/imGC9BAKF4/";
$destination = "./www/gc/imGC9BAKF4_bck/";
// Boucle de fichiers
foreach ($files as $file) {
$i=$i+1;
if (in_array($file, array(".","..","index.html"))) continue;
// Si c'est copié, efface !
if (copy($source.$file, $destination.$file)) {
$ii = $ii+1;
unlink($source.$file);
}`
Pourquoi le script ne fonctionne t-il pas en mode auto alors que si je le lance moi-même, il fonctionne ?
Les logs renseignent que le fichier est bien trouvé et exécuté. J'ai même créé un cron clone sur un 2e fichier avec un autre script créant un simple fichier texte sur le serveur avec l'heure écrite dans le fichier. En manuel, ok, testé 3x (j'ai effacé le fichier créé à chaque fois), en auto, après 2h, aucun fichier créé.
Tâches automatiques (cron) - Script Cron ne produit rien alors qu'il s'exécute (resolu)
Related questions
- CRON : erreur 255 encore et toujours
10646
30.08.2017 06:19
- cURL en ssh ou cron
8369
10.11.2016 15:26
- CRON avec fichier PHP non fonctionnel
8233
17.06.2017 18:50
- Problème CRON (url avec paramètres)
7831
02.08.2017 13:24
- Mon WP-CRON est cassé
7644
14.02.2025 17:54
- Mon CRON ne fonctionne pas
7570
20.10.2016 21:18
- Tache CRON sur OVH
6883
07.10.2020 16:29
- Problème de tache Cron avec Symfony
6627
03.07.2018 09:55
- Tache cron symfony
6287
10.06.2021 20:54
- Attention: WordPress cron jobs seem to be broken on your site! Demande d'aide svp
6241
14.02.2025 17:43
Bonjour @OliL
Par quoi commence ton script ?
Bonjour Gaston_phone.
Désolé, entre-temps, mon script a été modifié, il venait d'un autre hébergeur et l'accès au dossier ne comprenait pas les fameux _/www/_ utilisés chez OVH.
Depuis cette modif, et jusqu'à présent, cela fonctionnait bien. Les stats logs CRON me donnaient une exécution sans erreur et tout fonctionnait.
Cet après-midi, **sans changement aucun ni sur le serveur, ni dans le script**... de nouveau erreur.
Le script commence bien par _les variables pour le scandir() sont
> $files = scandir("www/ev/imagesb/");
> // Identify directories
> $source = "www/ev/imagesb/";
> $destination = "www/ev/imagesb_bck/";
et donc, depuis 14h aujourd'hui, les erreurs défilent :
> Warning: scandir(www/ev/imagesb/): failed to open dir: No such file or directory in /home/anims/www/ev/cron.php on line 6
> Warning: scandir(): (errno 2): No such file or directory in /home/anims/www/ev/cron.php on line 6
> Warning: Invalid argument supplied for foreach() in /home/anims/www/ev/cron.php on line 11
> Fichiers déplacés : 0 - Fichiers virés : 0
comme si le dossier imagesb avait disparu, alors qu'il est bien sur le serveur et qu'il a deux fichiers à l'intérieur.
Voilà le souci !
Quand le cron exécute lui même le script, aucune erreur.
Si je l'exécute moi même (ou une autre personne), erreur du scandir().
Pour l'exécuter moi même, je dois changer le chemin d'accès du dossier "www/ev/imagesb/" en "imagesb/" et de fait, cela fonctionne mais si le cron l'exécute, erreur.
Je voulais changer un paramètre et ajouter une ligne pour n'effacer que les *.jpg et vérifier si cela fonctionnait correctement en l'exécutant moi même.
Résolu donc, mais je ne comprends pas pourquoi une différence pour le chemin d'accès au dossier si on l'exécute nous même (ce qui sera rare maintenant) et si le cron exécute.