Para incluir conteúdo ativo, como script e executáveis, nos diretórios de documentos do servidor é algumas vezes consideread uma prática insegura. Se, por conta de um erro de configuração, os scripts não são executados mas mostrados como documentos HTML normais, isso pode resultar em vazamento de propriedade intelectual ou informação de segurança, como senhas. Portanto, muitos administradores preferirão configura outra estrutura de diretório para scripts que são acessíveis apenas pelo CGI do PHP, e, portanto, sempre interpretados e não enviado ao navegador.
Além disso, se o método para assegura que as requisições não são redirecionadas, como descrito na seção anterior, não estiver disponível, é necessário configura um doc_root para os script que é diferente do doc_root do servidor web.
Você pode configura a raiz de documentos dos scripts PHP pela
diretiva de configuração doc_root no
arquivo de configuração, ou
você pode criar a variável de ambiente
PHP_DOCUMENT_ROOT. Se ela existir, a versão CGI
do PHP sempre construirá o nome de arquivo para ser aberto com esse
doc_root
e a informação de caminho na
requisição, para assegurar que nenhum script é executado fora desse
diretório (exceto por user_dir
abaixo).
Outra opção utilizável é user_dir. Quando user_dir não existir,
a única coisa controlando o nome do arquivo aberto é
doc_root
. Abrir uma URL como http://my.host/~user/doc.php não resulta
em abrir um arquivo no diretório home de users, mas um arquivo
chamado ~user/doc.php dentro de
doc_root (sim, um nome de diretório começando com til
[~]).
Se user_dir existir e tiver valor de, por exemplo, public_php, uma requisição como http://my.host/~user/doc.php abrirá o arquivo chamado doc.php no diretório chamado public_php dentro do diretório home do usuário. Se o home do usuário é /home/user, o arquivo executado é /home/user/public_php/doc.php.
A expansão de user_dir
acontece independente da
configuração de doc_root
, para que você possa controlar
a raiz de documentos e de acesso de diretório do usuário
separadamente.