Когда я загружаю фотографии на свой веб-сервер, я пытаюсь разделить фотографии на несколько папок, чтобы у меня не было так много фотографий в одной папке.Итерация через каталоги рекурсивно в PHP
, например, внутри класса:
$filename = hash('crc32b', mt_rand());
$img_dir = UPLOAD_DIR.DS.'img'.DS.$filename[0].$filename[1].DS.$filename[2].$filename[3].DS.$filename[4].$filename[5];
DS
короткий вариант DIRECTORY_SEPARATOR
Это может создавать каталоги, подобные этим:
public_html\assets\upload\img\25\55\8b
public_html\assets\upload\img\00\8c\2a
, если файл не существует, и есть таких каталогов уже нет
$img_path = $img_dir.DS.$filename.'.jpg';
if (!file_exists($img_path) && !is_dir($img_dir)) {
$mode = 0755;
mkdir($img_dir, $mode, true);
chmod(UPLOAD_DIR, $mode);
chmod(UPLOAD_DIR.DS.'img', $mode);
chmod(UPLOAD_DIR.DS.'img'.DS.$filename[0].$filename[1], $mode);
chmod(UPLOAD_DIR.DS.'img'.DS.$filename[0].$filename[1].DS.$filename[2].$filename[3], $mode);
chmod(UPLOAD_DIR.DS.'img'.DS.$filename[0].$filename[1].DS.$filename[2].$filename[3].DS.$filename[4].$filename[5], $mode);
}
Я не хочу, чтобы все папки были 755, как это можно сделать рекурсивно?
EDIT:
Кроме того, почему я получаю 493
как выход, когда я echo $mode;
или echo 0755;
?
Как для редактирования, '0755' является восьмеричным, который в десятичной системе счисления является' 493' –