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 assegurar que as requisições não são redirecionadas, como descrito na seção anterior, não estiver disponível, é necessário configurar um doc_root no script que seja diferente do diretório raiz dos documentos 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
for
indefinido, a única coisa controlando o 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
estiver, por exemplo, definido para 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.