У меня есть довольно непонятный вопрос / проблема, позвольте мне изложить ее вам.

У меня два каталога - галерея и загрузчик

Каталог загрузчика защищен паролем htaccess. Здесь находятся несколько страниц PHP и программа загрузки файлов PHP. Я ввожу свои учетные данные, когда получаю доступ к PHP-файлу индекса, когда я загружаю индекс в каталог.

Проблема в том, что загрузчик загружает файлы, а затем перемещает их в каталог галереи (не защищенный паролем). Затем он запускает другие сценарии, чтобы скопировать это изображение, изменить его размер, а затем удалить оригинал. Этот процесс работает прекрасно, пока я не помещу пароль 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']);
2
Fernker 17 Май 2011 в 01:10

2 ответа

Лучший ответ

Я забыл на это ответить (мое плохое). В конце концов, я смог заставить его работать, только не защищая каталог загрузки .htaccess. Это было не идеально, но я не мог понять ничего другого. Поскольку я спросил об этом, я преобразовал сайт в Django, и это устранило все мои проблемы.

0
Fernker 8 Май 2012 в 02:28

Защита .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
Marc B 17 Май 2011 в 01:16
Если скрипт загрузчика вызывает другие скрипты, как вы говорите, я бы проверил, вызываются ли какие-либо из них через http (свидетельства этого будут в access_log сайта).
 – 
Marc B
17 Май 2011 в 01:39
Единственный вызываемый файл - это еще один файл PHP, который я включаю с помощью стандартной инструкции PHP include. (Он находится в подпапке в том же защищенном каталоге). Это средство изменения размера изображения PHP, в котором в качестве параметра для сохранения изображения используется относительный путь (т. Е. ../../Gallery/upload).
 – 
Fernker
17 Май 2011 в 01:41