Foros del Web » Programando para Internet » PHP »

Tengo problemas con las rutas

Estas en el tema de Tengo problemas con las rutas en el foro de PHP en Foros del Web. Tengo mi proyecto en una carpeta llamada "Proyecto" dentro de la que tengo una subcarpeta llama "mantenimientos" con varios archivos php. Dentro de mi carpeta ...
  #1 (permalink)  
Antiguo 04/07/2012, 21:22
 
Fecha de Ingreso: octubre-2011
Mensajes: 58
Antigüedad: 12 años, 9 meses
Puntos: 0
Tengo problemas con las rutas

Tengo mi proyecto en una carpeta llamada "Proyecto" dentro de la que tengo una subcarpeta llama "mantenimientos" con varios archivos php.
Dentro de mi carpeta "Proyectos" también tengo el index.html y un header que lo incluyo con php en todas las paginas.

El problema es que no puedo incluir el header en varios archivos usando la misma ruta.
Es decir, en el index lo incluyo con:
Código PHP:
Ver original
  1. <?php include("header.html"); ?

Pero en el archivo php "vehiculos.php" que esta dentro de la carpeta "mantenimientos" lo incluyo con:
Código PHP:
Ver original
  1. <?php include("../header.html"); ?
Porque esta en un directorio superior, hasta ahora todo bien, pero en el header, incluyo un menu con enlaces a otros archivos. Cada enlace tiene el siguiente formato "Proyecto/mantenimientos/archivo1.php"

Cuando trato de visitar los enlaces desde el index funcionan bien, con el formato que dije, pero cuando los trato de visitar desde uno de los archivos de la carpeta "mantenimiento", la ruta no se encuentra y es porque los enlaces del menu que se muestra para los archivos en mantenimiento tiene la forma "Proyecto/mantenimientos/mantenimientos/archivo1.php", como ven la carpeta mantenimiento aparece dos veces.

Entonces no sé que hacer...

Intenté poner los enlaces de forma que buscara desde la raiz, pero no me funcionan, los puse así:
"/header.html" ya que el header esta en el directorio raiz, pero no me funciona, tampoco sirve "./header.html"
__________________
La libertad más difícil de conservar es la de equivocarse. - Morris Wes

Lo que faltaba en internet: http://binar10s.blogspot.com/
  #2 (permalink)  
Antiguo 05/07/2012, 06:37
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 6 meses
Puntos: 32
Respuesta: Tengo problemas con las rutas

Comprueba cómo tienes el include_path
  #3 (permalink)  
Antiguo 05/07/2012, 07:25
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 5 meses
Puntos: 44
Respuesta: Tengo problemas con las rutas

Lo mejor en estos casos, es utilizar rutas absolutas en vez de rutas relativas al documento.

Utiliza alguna especie de fichero de configuración que incluyas en tus documentos y desde el cual puedas sacar la rutas completas.

También puedes utilizar definiciones de constantes.

Para tal cosa, directivas como el $_SERVER['DOCUMENT_ROOT'], __FILE__ o __DIR__ te ayudarán bastante.

Echa un ojo aqui:
http://php.net/manual/es/language.co...predefined.php

Y por el foro:

http://www.forosdelweb.com/f18/rutas...as-php-194373/

Saludos
  #4 (permalink)  
Antiguo 05/07/2012, 08:12
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años
Puntos: 194
Respuesta: Tengo problemas con las rutas

Cita:
Iniciado por SetheR Ver Mensaje
Lo mejor en estos casos, es utilizar rutas absolutas en vez de rutas relativas al documento.

Utiliza alguna especie de fichero de configuración que incluyas en tus documentos y desde el cual puedas sacar la rutas completas.

También puedes utilizar definiciones de constantes.

Para tal cosa, directivas como el $_SERVER['DOCUMENT_ROOT'], __FILE__ o __DIR__ te ayudarán bastante.

Echa un ojo aqui:
http://php.net/manual/es/language.co...predefined.php

Y por el foro:

http://www.forosdelweb.com/f18/rutas...as-php-194373/

Saludos
Sether me gano de antemano, hazle caso, es un buen consejo.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #5 (permalink)  
Antiguo 05/07/2012, 08:42
 
Fecha de Ingreso: octubre-2011
Mensajes: 58
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Tengo problemas con las rutas

En el archivo header.php, he definido la siguiente constante:

Código PHP:
Ver original
  1. <?php define('HEADER', __FILE__);
  2.     echo HEADER; ?>

e imprimí su valor para ver si era correcto y en efecto, si es correcto.

Pero luego cuando voy a index.php y hago un include con la variable que acabo de definir, no funciona, no se incluye el header.
Código PHP:
Ver original
  1. <?php include(HEADER); ?>

No tengo acceso a la constante HEADER desde otra pagina. Según leí las constantes son globales y se pueden acceder desde cualquier parte, entonces no entiendo porque no tengo acceso.
__________________
La libertad más difícil de conservar es la de equivocarse. - Morris Wes

Lo que faltaba en internet: http://binar10s.blogspot.com/

Última edición por link01; 05/07/2012 a las 09:10
  #6 (permalink)  
Antiguo 05/07/2012, 11:41
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años
Puntos: 194
Respuesta: Tengo problemas con las rutas

Cuando haces un define, estas creando una constante. No se puede acceder a ella en todo tu sitio como si fuera una $_SESSION.

Lo que puedes hacer es crear un archivo de configuración e incluirlo en los archivos que crear necesarios. Un ejemplo puede ser este:

config.php
Código PHP:
Ver original
  1. <?php
  2. define('HEADER', __FILE__);
  3. ?>

index.php
Código PHP:
Ver original
  1. <?php
  2. include_once('config.php);
  3. echo HEADER;
  4. ?>
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #7 (permalink)  
Antiguo 05/07/2012, 19:26
 
Fecha de Ingreso: octubre-2011
Mensajes: 58
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Tengo problemas con las rutas

Sigo teniendo el mismo problema con la ruta, sale la carpeta mantenimientos duplicada.
__________________
La libertad más difícil de conservar es la de equivocarse. - Morris Wes

Lo que faltaba en internet: http://binar10s.blogspot.com/
  #8 (permalink)  
Antiguo 06/07/2012, 06:45
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años
Puntos: 194
Respuesta: Tengo problemas con las rutas

Estas usando include once y no include solo no?
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #9 (permalink)  
Antiguo 07/07/2012, 09:43
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 5 meses
Puntos: 44
Respuesta: Tengo problemas con las rutas

A ver, sí puedes acceder a tu constantes desde todo tu sitio, pero debes haberlas definido antes de usarlas. Es decir, si tu no incluiste el archivo donde defines constantes ANTES de utilizarlas, no funcionará. PHP no guarda los estados de la aplicación entre peticiones consecutivas, y guardar rutas en variables de sesión no es una buena práctica.

Usando constantes:

Lo que debes hacer es, por ejemplo, crear un un archivo config.php tal que así:

Código PHP:
Ver original
  1. <?php
  2.  define("HEADERS", "ruta/a/los/headers/");
  3.  define("OTROS", "ruta/a/otros/");
  4. ?>

Y en cada uno de tus archivos, simplemente incluir la configuración de los paths.
Código PHP:
Ver original
  1. <?php
  2. require_once($_SERVER['DOCUMENT_ROOT'] . 'config.php');
  3.  
  4. require(HEADERS . 'miheader.php');
  5.  
  6. require(OTROS. 'miarchivo.php');
  7.  
  8. //mas cosas
  9. ?>

Aunque, actualmente, la práctica más extendida es ingresar a tu aplicación por un único punto de entrada, para recoger configuraciones y ejecutar las acciones deseadas por el usuario.
Ésto último, por ejemplo, es uno de las propiedades fundamentales para una implementación del patrón MVC.

PD: Es básicamente los que te ha dicho el otro compi, pero él cometió un error en "include_once('config.php);" ya que desde las carpetas de tu sitio, las ruta cambia, de ahí el DOCUEMNT_ROOT. Sólo tienes que colocar el config.php ahí

Última edición por SetheR; 07/07/2012 a las 09:49 Razón: highlights

Etiquetas: html, rutas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:04.