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 el hecho del 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 interpretado y no desplegado como tal.
También si el método para asegurar las peticiones no es redirigido, 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 de los usuarios, pero si
un fichero llamado ~usuario/documento.php debajo de
doc_root (si, un nombre de directorio que inicia con una a 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 de el directorio personal del usuario. Si el directorio personal del usuario es /home/usuario, el fichero ejecutado será /home/user/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.