#php #.htaccess
#php #.htaccess
Вопрос:
У меня довольно непонятный вопрос / проблема, позвольте мне изложить его вам.
У меня есть два каталога — gallery и uploader
Каталог загрузчика защищен паролем htaccess. Здесь находятся несколько PHP-страниц и загрузчик PHP-файлов. Я ввожу свои учетные данные при доступе к файлу PHP index при загрузке индекса в каталог.
Проблема в том, что загрузчик загружает файлы, а затем перемещает их в каталог галереи (не защищенный паролем). Затем он запускает другие скрипты, чтобы скопировать это изображение, изменить его размер, а затем удалить оригинал. Этот процесс работает прекрасно, пока я не добавлю пароль htaccess в каталог загрузчика. Итак, по какой-то причине загрузчик PHP в защищенном каталоге не может переместить / обработать загруженное изображение, а затем скопировать его в незащищенный каталог.
Есть идеи, что мне нужно сделать? Я не уверен, связана ли проблема с загрузчиком PHP, вызывающим другие скрипты в защищенном каталоге, или у него возникают проблемы при перемещении в незащищенный каталог.
РЕДАКТИРОВАТЬ: Вот некоторый пример кода, и, как вы можете видеть, URL-адреса не используются (как и в методе resizeMyImageTN).
//WHERE THE SAVE HAPPENS!
move_uploaded_file($_FILES['Filedata']['tmp_name'], '../../uploads/'.$folder.'/'.$new_index.'-' . $_FILES['Filedata']['name']);
//Call function to resize images pass in path
resizeMyImageTN($_FILES['Filedata']['name'],$folder, $new_index);
unlink('../../uploads/'.$folder.'/'.$new_index.'-' . $_FILES['Filedata']['name']);
Ответ №1:
защита .htaccess работает на уровне веб-сервера. Но, ЕСЛИ вы не используете URL-адреса в своих различных вызовах для обработки файлов, PHP-скрипт работает на уровне файловой системы и никогда не увидит защиту .htaccess.
move_uploaded_file($_FILES['uploaded']['tmp_name'], '/some/dir/that/is/protected/newname.txt');
не будет задействован уровень HTTP, что означает отсутствие защиты. Но если бы вы попытались
move_uploaded_file($_FILES['uploaded']['tmp_name'], 'http://myserver.com/newname.txt');
для этого потребуется новый HTTP-запрос, повторная загрузка файла и любые ограничения URL, действующие на сервере.
Не видя некоторого кода, мы, скорее всего, не сможем ответить на ваш вопрос.
Комментарии:
1. Если скрипт загрузчика вызывает другие скрипты, как вы говорите, я бы проверил, вызывается ли какой-либо из них через http (доказательства этого были бы в журнале доступа сайта).
2. Вызывается только другой PHP-файл, который я включаю, используя стандартную инструкцию PHP include. (Он находится во вложенной папке в том же защищенном каталоге). Это средство изменения размера изображения на PHP, использующее относительный путь в качестве параметра для сохранения изображения (т. Е. .. / .. / галерея / загрузка)
Ответ №2:
Я забыл ответить на это (моя ошибка). В итоге я смог заставить его работать, только если не был защищен каталог загрузки .htaccess. Это было не идеально, но, похоже, я не мог придумать ничего другого. Поскольку я задал этот вопрос, я преобразовал сайт в Django, и это устранило все мои проблемы.