Разрешить PHP-скрипт в защищенном каталоге

У меня есть папка с именем «templates», которая имеет CHMOD 777 и защищена htpasswd. Это означает, что я все еще могу использовать свой сценарий загрузки PHP для загрузки файлов в эту папку, и люди извне не могут получить доступ к этим файлам.

У меня также есть скрипт, который использует класс phpmailer. Этот сценарий отправляет электронные письма и прикрепляет файл, который находится в этой защищенной папке.

Моя проблема в том, что теперь, когда я включил эту защиту, я получаю электронное письмо, но без вложения. Я получаю вложение только тогда, когда нет защиты htpasswd.

Любая идея, что я мог бы сделать?


person 45808    schedule 25.03.2011    source источник
comment
При условии, что файлы и скрипт почтовика находятся на одном сервере, он должен работать с защитой. Как прикрепить файл?   -  person Maerlyn    schedule 25.03.2011


Ответы (2)


PHP работает за пределами защиты htpasswd веб-сервера - после запуска скрипта он получает полную свободу действий в файловой системе (по крайней мере, над тем, что может касаться идентификатора пользователя/группы веб-сервера). Если вы не укажете путь к прикрепляемому файлу в виде URL-адреса, любые операции с этим файлом будут проходить через обычные операции с файловой системой, а не через веб-сервер, поэтому защита htpasswd не входит в картину.

Если файл не прикреплен, я бы проверил сценарий и посмотрел, указываете ли вы соответствующий путь к файлу и имеет ли идентификатор пользователя веб-сервера права на чтение файла.

person Marc B    schedule 25.03.2011

Убедитесь, что ваш скрипт обращается к файлам вложений как к путям в файловой системе, например

/var/www/example.com/httpdocs/uploads/foo.jpg

Не как URL

http://example.com/uploads/foo.jpg

Подтвердите, что скрипт может получить доступ к файлу

<?php
if(!is_readable($file)) {
   $user = get_current_user();
   echo 'Error: '.$user.' cannot access '.$file;
   exit();
}
?>
person cantlin    schedule 25.03.2011