Incluir contenido activo en los directorios de documentos del
servidor web, como scripts y ejecutables, es considerada en
ocasiones una práctica insegura. Si, por algún
fallo de configuración, los scripts no llegaran a ser
ejecutados sino desplegados como documentos HTML normales, esto
podrÃa resultar en la revelación de
información crÃtica como trabajos cubiertos por
normas de propiedad intelectual o datos de seguridad como
contraseñas. Por lo tanto muchos administradores de
sistemas preferirán la configuración de otra
estructura de directorios para los scripts que sean asequibles
únicamente a través del CGI PHP, y por lo tanto
deben ser interpretados siempre y no desplegados directamente.
Asà mismo, si el método para asegurarse de que las
peticiones no son redireccionadas, tal y como se describió
en la sección anterior, no está disponible, es
necesario entonces configurar un directorio raÃz
(doc_root) de scripts que sea diferente al directorio raÃz
de documentos web.
Puede definir el directorio raÃz para scripts de PHP
mediante la directiva de configuración doc_root en el archivo de
configuración, o puede darle un valor a la variable
de entorno
PHP_DOCUMENT_ROOT. Si ésta está
definida, la versión CGI de PHP construirá siempre
el nombre del archivo a abrir con
este doc_root y la información de
la ruta dada en la petición, de modo que puede estar
seguro de que ningún script será ejecutado por
fuera de este directorio (excepto por aquellos indicados en
user_dir, como se verá a
continuación).
Otra opción que puede ser usada en este caso es user_dir. Cuando user_dir no
está definida, lo único que controla la apretura de
archivos es
doc_root. Abrir una URL como http://mi.servidor/~usuario/doc.php no
resulta en la apertura de un archivo bajo el directorio personal
del usuario, sino de un archivo llamado ~usuario/doc.php bajo la ruta doc_root
(asà es, un directorio cuyo nombre comienza por el
caracter de equivalencia [~]).
Si user_dir está definido como, por ejemplo, public_php, una petición
como http://mi.servidor/~usuario/doc.php
abrirá un archivo llamado doc.php
bajo el directorio con el nombre public_php ubicado en el directorio
personal del usuario. Si el directorio personal del usuario
es /home/usuario, el archivo
ejecutado es
/home/usuario/public_php/doc.php.
La expansión del valor de user_dir
ocurre independientemente del parámetro
doc_root, de modo que es posible controlar
el directorio raÃz de los documentos y el acceso a los
directorios de los usuarios en forma separada.