Para incluir contenido activo, como scripts y ejecutables, en los directorios de documentos del servidor web es algunas veces considerado una práctica insegura. Si, por algún error de configuración, los scripts no se ejecutan y son mostrados como documentos HTML regulares, esto podría resultar en una fuga de información de propiedad intelectual o de información de seguridad como las contraseñas. Por lo tanto muchos Administradores de Sistemas preferirán configurar otra estructura de directorios para scripts que sean accesibles solamente a través del CGI de PHP, y por lo tanto siempre interpretados y no mostrados como tales.
También si el método para asegurarse de que las peticiones no son redirigidas, como se describió en la sección anterior, no está disponible, es necesario configurar un script doc_root que sea diferente de la raíz del documento web.
Usted puede configurar el script de la raíz de documento de PHP en la directiva
de configuración doc_root en el
fichero de configuración, o
puede configurar la variable de entorno PHP_DOCUMENT_ROOT.
Si éste es configurado, la versión del CGI
de PHP siempre construirá el nombre del fichero para abrir con este
doc_root y la ruta de información en la petición,
de tal forma que pueda estar seguro que ningún script será ejecutado fuera de
este directorio (excepto por user_dir que se encuentra
más abajo).
Otra opción utilizable es esta user_dir. Cuando user_dir no está configurado,
lo único que controla el fichero abierto es
doc_root.
Al abrir una URL como http://mi.servidor/~usuario/documento.php no resulta
en la apertura de un fichero bajo el directorio personal del usuario, sino
un fichero llamado ~usuario/documento.php debajo de
doc_root (sí, un nombre de directorio que empieza con una tilde [~]).
Si user_dir es configurado, por ejemplo public_php, una petición como http://mi.servidor/~usuario/doc.php abrirá un
fichero llamado doc.php bajo el directorio
llamado public_php debajo del directorio
personal del usuario. Si el directorio personal del usuario es /home/usuario, el fichero ejecutado será
/home/usuario/public_php/doc.php.
La expansión de user_dir sucede sin tomar en cuenta
la configuración de doc_root, así que usted puede
controlar el acceso a la raíz de los documentos y el directorio de los
usuarios separadamente.