Duas coisas:
- Os caminhos em
<Directory>
devem ser absolutos. - Navegar para um diretório acima da raiz do documento é tratado pelo servidor da Web e não é permitido em geral.
Estou armazenando meus logs em uma pasta 'log' acima do meu diretório da web
Minha estrutura de diretórios é assim:
web/ (document root)
log/ (log files go in here)
Eu fiz a seguinte alteração na minha configuração do Apache, para garantir que NENHUM dos arquivos nessa pasta seja legível pelo mundo:
<Directory absolute_path_to/log>
Order allow,deny
Deny from all
Satisfy All
</Directory>
[Editar]
Estou usando o framework symfony, e um arquivo .htacess é colocado na pasta web.
O arquivo .htacess contém a seguinte seção:
##Protect your site<92>s PHP error log via htaccess
# prevent access to php error log
<Files ../log/php_errors.log>
Order allow,deny
Deny from all
Satisfy All
</Files>
Eu modifiquei isso e o alterei para limitar o acesso a toda a pasta de log, em vez de um arquivo específico (já que estou armazenando outros logs lá).
Eu fui informado (Iganacio), que o servidor automagicamente bloqueia o acesso a pastas fora da raiz do documento. Em qualquer caso, se não fizer isso, prefiro ainda incluir a seção em minha configuração do host virtual, apenas para estar no lado seguro.
Essa é a maneira correta de fazer isso, para que a pasta de log seja completamente proibida?
A maneira mais fácil é colocar isso no .htaccess no diretório log /:
deny from all
Como você quer que o diretório inteiro seja protegido, você não precisa da diretiva <Files ...>
, apenas da linha de negação que bloqueia tudo que entra nesse diretório. No entanto, Ignacio está correto em dizer que você não deve precisar disso porque o diretório log / está fora do que o Apache está servindo.