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.