Untuk majlis hari jadi isteri saya, saya menyediakan laman web di mana saya mengumpul imej tetamu parti dan kemudian membuat buku yang bagus sebagai kenang-kenangan. Tetamu mempunyai akaun dan memuat naik imej ke folder "mereka". Saya kini mempunyai alat yang secara dinamik mencipta tayangan slaid daripada gambar - tetapi malangnya ia tidak dapat merentasi subfolder. Jadi matlamat utama saya adalah untuk menyalin fail imej ke folder tertentu yang mana tayangan slaid boleh membawanya. Saya kemudian akan menjalankan skrip PHP sebagai cron setiap 5 minit atau lebih dan memaparkan imej pada skrin untuk tempoh pesta.
Saya telah menemui sekumpulan coretan kod yang semuanya melakukan perkara yang sama: Mereka menyalin semua fail dan folder secara rekursif ke destinasi yang ditentukan. Sebagai contoh. Yang ini (diambil dari sini: https://code-boxx.com/copy-folder-php/):
<?php // (A) COPY ENTIRE FOLDER function copyfolder ($from, $to, $ext="*") { // (A1) SOURCE FOLDER CHECK if (!is_dir($from)) { exit("$from does not exist"); } // (A2) CREATE DESTINATION FOLDER if (!is_dir($to)) { if (!mkdir($to)) { exit("Failed to create $to"); }; echo "$to created\r\n"; } // (A3) GET ALL FILES + FOLDERS IN SOURCE $all = glob("$from$ext", GLOB_MARK); print_r($all); // (A4) COPY FILES + RECURSIVE INTERNAL FOLDERS if (count($all)>0) { foreach ($all as $a) { $ff = basename($a); // CURRENT FILE/FOLDER if (is_dir($a)) { copyfolder("$from$ff/", "$to$ff/"); } else { if (!copy($a, "$to$ff")) { exit("Error copying $a to $to$ff"); } echo "$a copied to $to$ff\r\n"; } }} } // (B) GO! copyfolder("C:/SOURCE/", "C:/TARGET/"); ?>
Ini berfungsi dengan baik, tetapi sebenarnya ia bukan yang saya perlukan. Skrip sedang menyalin fail dan folder dan meletakkan fail ke dalam subfolder yang sama di dalamnya. Masalah saya ialah saya tidak mahu mencipta subfolder. Saya hanya mahu skrip melalui semua subfolder dan menyalin fail imej yang ditemui ke dalam folder. Saya fikir ini sepatutnya menjadi perkara yang mudah untuk pemula, tetapi nampaknya saya salah.
Bolehkah sesiapa membantu saya mencapai ini? Terima kasih!
IT Goldman betul - biarkan $to keluar daripada persamaan; malah saya mengalih keluar pembolehubah $to sepenuhnya dan meletakkan laluan saya dalam parameter salinan: