Проблемы с загрузчиком PHP и паролем htaccess

#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, и это устранило все мои проблемы.