if (!is_writable($save_path)){
mkdir($save_path, 0777, true);
}
$uploadfile = $save_path . basename($_FILES[$form_field_name]['name']);
if (is_writable($save_path)){
move_uploaded_file($_FILES[$form_field_name]['tmp_name'], $uploadfile)
}
Это создаст новый реж внутри моей директории даты загрузки, и если я зашпаклевать на сервер и сделать Ls -la, то реж был создан с разрешениями/собственностями :PHP создает каталог не может написать
drwxr-хт-х апач апач
Великий. Но перемещение загруженного файла в этот новый каталог не выполняется:
SAFE MODE Ограничение действует. Сценарий которого UID является 0 не разрешен доступ /var/www/vhosts/domain.com/httpdocs/media/uploads/DE принадлежит UID 48
Хорошо, так что я получаю КАК ошибка происходит - новая папка создается с владельцем и группой, настроенной на «apache» (кто, я думаю, пользователь 48), и пользовательский «root» не может получить к ней (пользователь 0 является root, правильно?). И я предполагаю, что безопасный режим также останавливает меня, создавая каталог как 777, и решил в своей бесконечной мудрости не делать того, что я просил.
Но ... как мой PHP-скрипт создает каталоги как «apache» и пытается переместить материал в них как root? И как я могу обойти его, не взяв топор в безопасный режим?
Тот факт, что ваш скрипт создает каталог, но в итоге он имеет разные разрешения от того, что вы передаете в качестве аргумента, предполагает, что есть что-то серверное, которое обеспечивает разрешения, которые может установить ваш скрипт. – GordonM