Pour un site hébergé chez OVH en Kimsuffit2015, nous utilisions un cron qui copiait tous les fichiers contenus dans un dossier vers un dossier backup et supprimait les dossiers source juste après. Ce cron fonctionnait bien avec la version PHP 7.0 legacy.
Voici (en partie) le code utilisé et qui fonctionnait jusqu'à présent (jusqu'à la mise à jour PHP 8.1 stable 64) :
// Identify directories
$files = scandir("www/bk/imAKF/");
$source = "www/bk/imAKF";
$destination = "www/bk/imAKF_bck";
// Cycle through all source files
foreach ($files as $file) {
if (in_array($file, array(".","..","index.html"))) continue;
$i=$i+1;
// If we copied this successfully, mark it for deletion
if (copy($source.$file, $destination.$file)) {
$ii = $ii+1;
unlink($source.$file);
}
}
echo 'Fichiers déplacés : ' . $i . ' - Fichiers virés : ' . $ii;
L'echo est utilisé juste pour les tests.Depuis la mise à jour vers 8.1, la tâche rencontre une erreur et ne s'exécute plus, avec ce code erreur :
Ne connaissant pas trop php8 et ses changements, qui peut m'aider à retrouver une tache cron fonctionnelle avec PHP 8.1 ?Array ( [0] => . [1] => .. [2] => 1645894038-name.jpg [3] => 1645894134-free .jpg [4] => 1645894158-LOWFR0501 .jpg [5] => 1650125669-CERISES.jpg [6] => 1652195033-CERISES.jpg [7] => 1652195141-CERISES.jpg [8] => 1653039031-DZDEZ.jpg [9] => index.html [10] => tmpc ) Array ( [0] => tmpc [1] => index.html [2] => 1653039031-DZDEZ.jpg [3] => 1652195141-CERISES.jpg [4] => 1652195033-CERISES.jpg [5] = > 1650125669-CERISES.jpg [6] => 1645894158-LOWFR0501 .jpg [7] => 1645894134-free.jpg [8] => 1645894038-name.jpg [9] => .. [10] => . )
Attention : Variable non définie $files dans /home/truefile/www/bk/cron_imAKF.php en ligne 25
Attention: l'argument foreach() doit être de type array|object, null donné dans/home/truefile/www/bk/cron_imAKF.php à la ligne 25
Fichiers déplacés : 0 - Fichiers virés : 0