Tornar um arquivo acessível por PHP, mas não a partir do exterior

1

Meu host me fornece duas pastas para meu uso, um /home/public/ , que é onde as páginas vão, e /home/private/ , que é para meu uso pessoal. Eu gostaria que o PHP criasse um arquivo que pudesse ser lido por mim na máquina, mas não por qualquer outra pessoa na Internet. Tornar o arquivo na pasta pública causa esse problema. Eu pensei em fazer o arquivo pertencente ao grupo apache, mas eu não sou um membro dele. Seria bom se eu pudesse colocar o arquivo no meu diretório privado, mas compreensivelmente, eu recebo erro de acesso ao tentar gravar em um arquivo nele. O que eu faço?

    
por Jeams 15.01.2012 / 18:12

1 resposta

1

Muitos pacotes requerem subdiretórios acessíveis por programas / scripts dentro da hierarquia html ou pública.

Como você é (eu suponho) rodando em um serviço compartilhado usando suPHP ou equiv, isso somente executará scripts no UID do proprietário, portanto, isso não estará disponível. Adotei uma convenção muito simples: se qualquer nome de arquivo ou pasta começar com _ ou. então o acesso através de um URI é proibido. Esta é uma regra simples que eu coloco em qualquer arquivo .htaccess com

SetEnvIf Request_URI "(^_|/_|^\.|/\.)" forbidden
<Files *>
     Order allow,deny
     Allow from all
     Deny from env=forbidden
</Files> 

Outra maneira de fazer isso é com um RewriteRule:

RewriteRule (^_|/_|^\.|/\.)            -                  [forbidden]

Isso tem a vantagem de poder adotar esta convenção extremamente simples para qualquer diretório de inclusão ou de dados que você queira acessar em seus scripts, mas que não os os deseje navegáveis via URI.

Nota de rodapé

Estou um pouco confuso sobre sua afirmação:

It would be nice if I could put the file in my private directory, but understandably, I get access error when trying to write to a file in it.

Esse é um desses recursos em que o UID do provedor de serviços é proprietário / home / private / e você só tem acesso de leitura por meio de seu GID? Meu ISP faz o mesmo para descarregar coisas como arquivos de log. Eu posso ler, mas não escrever ou excluir. É por isso que uso /public/_private . Desculpe pelo oxímoro.

    
por 15.01.2012 / 19:30