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

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

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

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

Есть идеи, что я могу сделать?

Ответы [ 2 ]

1 голос
/ 25 марта 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();
}
?>
1 голос
/ 25 марта 2011

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

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

...