Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Diseño web | Promoción web | Ganar dinero
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Colocar los archivos PHP fuera del directorio de publicación


Algunos casos en los que colocar archivos fuera del directorio de publicación tiene sentido y utilidad.


10/6/03 - Por decir algo más sobre el tema de colocar los archivos, quería señalar que cualquier cosa que pongamos fuera del directorio de publicación no podrá ser accedida a través del navegador. Es decir, si creamos un directorio que se llame funciones_php en el mismo nivel que el directorio de publicación (fuera del directorio de publicación) no podremos acceder con el explorador a los archivos que coloquemos dentro de ninguna de las maneras. Esto es así porque la URL de inicio de nuestro alojamiento corresponde con ese directorio y no podemos movernos hacia debajo de ese directorio con las URLs, que son la manera de especificar al navegador los recursos a los que se quiere acceder.

Referencia: Ya se explicó lo que era el directorio de publicación en el capítulo anterior sobre Subir archivos PHP al servidor.

No sería posible salir del directorio de publicación con una URL como esta, por mucho que utilicemos el operador .. (que sirve para acceder al directorio padre).

http://www.midominio.com/../funciones_php/archivo_inalcanzable.php

Sin embargo, colocar algunos contenidos fuera del directorio de publicación puede ser muy útil. Por ejemplo, podríamos colocar allí copias de seguridad de algunos archivos o documentos que simplemente queremos guardar en el servidor para acceder a ellos desde cualquier parte y con nuestro programa de FTP.

Hay otra utilidad más interesante sobre colocar archivos fuera del directorio de publicación. Se trata de que muchas veces utilizamos en nuestros programas trozos de código repetidamente, por ejemplo, para abrir y cerrar bases de datos, para mostrar la cabecera de nuestro portal, para comprobar que un email escrito en un formulario es correcto, etc. Es muy útil separar estos trozos de código en un archivo a parte y llamar a este archivo con las funciones PHP include() o require(). Así, si un día modificamos la cabecera de nuestro portal, sólo lo tendremos que modificar en un archivo, o, si cambia la base de datos que utilizamos sólo tendríamos que modificar el archivo que hace la conexión a la base de datos una vez, en lugar de ir cambiándolo en todas las páginas PHP que abrían las bases de datos.

Estos archivos no son páginas independientes, sino trozos. Seguramente, si los ejecutamos por separado no mostrarían ningún resultado válido, incluso podrían dar mensajes de error. Por esta razón merece la pena colocarlos en un lugar donde nadie pueda tener acceso: fuera del directorio de publicación. Con PHP si que podremos acceder a ese directorio para incluir esos archivos. Solamente deberíamos utilizar las funciones PHP include() o require() indicando la ruta para acceder a los archivos.

En el caso de que tengamos una página llamada hola.php en el directorio de publicación y un archivo, que se llama abre_base_datos.php, en el directorio funciones_php, que está fuera del directorio de publicación, si quisiéramos acceder (desde hola.php) al archivo que abre la base de datos lo haríamos así.

include("../funciones_php/abre_base_datos.php")

Desde PHP sí que podemos acceder a los archivos que se encuentran fuera del directorio de publicación. Para ello especificamos la ruta adecuada, en la que utilizamos el operador .. para bajar al directorio padre.

Nada más que decir sobre la colocación de los archivos: una vez situados en el directorio de publicación se podrá acceder a ellos con nuestro navegador y se deberían ejecutar perfectamente. Aunque cabe señalar que, tanto PHP como el servidor donde trabajemos, pueden tener configuraciones distintas y puede que algún detalle de la programación de nuestras páginas no funcione correctamente.

Por ejemplo, nuestro PHP puede declarar o no automáticamente las variables que llegan a través de un formulario. Si en local si que estaba configurado para hacer esto y en remoto no, deberíamos localizar los lugares donde recogemos las variables y utilizar las variables de entorno correctas (mirar artículo sobre Procesar variables de formularios y los comentarios al pie para saber más de esta posible fuente de errores).

Aunque este no es un caso habitual, podemos ponernos en contacto con nuestro proveedor de alojamiento para ver si pueden ayudarnos configurando el sistema o indicando los pasos a seguir para solventar en nuestros scripts el asunto.

Comentario: el siguiente script calcula el nivel de directorio de los scripts que queremos incluir en la página actual.

// Hallamos el nivel de directorio en que está ubicada la página
1. Se hace un recuento de los caracteres que contiene el nombre del script
actual.
-
$Chars = count_chars($PHP_SELF,1);
-
2. Exploramos la tabla de los caracteres devueltos buscando el carácter ('/'
Código 47 ) de directorio (carpeta) que devuelve Apache.
-
foreach ($Chars as $Char=>$nChars){
   if ($Char==47) {$n=$nChars;break;}
}
-
3. Generamos una cadena de n-1 veces con la subcandena "../" que nos da el
nivel de directorio en que se encuentra el script.
-
if ($n==0) $PathString=""; else $PathString=str_pad("",($n-1)*3,"../");

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada
+ 1 comentario (Añadir)
+ 7 comentarios no revisados

 Autoría, licencia y acciones sobre este artículo

Informe de Miguel Angel Alvarez*
Director de DesarrolloWeb.com

Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Programación en PHP

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Manuales de PHP


 Comentarios de los visitantes
Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar.
Se muestra un comentario revisado

 Comentario de FlyMan
10/1/04 
Hay alguna forma de pasarle parametros al codigo llamado con un include() ?

Funciona si paso toda la direccion web, pero me redirecciona al codigo llamado, solo quiero que se ejecute endro del codigo padre.

Muy bueno el articulo

Añadir un comentario al artículo Añadir un comentario del artículo
 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se han encontrado 7 comentarios sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Programación en PHP
Categorías
+Manuales de PHP

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia