Foros del Web » Programando para Internet » PHP »

Problema con include

Estas en el tema de Problema con include en el foro de PHP en Foros del Web. Hola gente! Tengo un problemita con la ruta de los include... Tengo un documento al cual llamo contenidocomun.php (ubicado en la raíz) donde tengo unas ...
  #1 (permalink)  
Antiguo 10/06/2006, 08:51
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Problema con include

Hola gente!

Tengo un problemita con la ruta de los include...

Tengo un documento al cual llamo contenidocomun.php (ubicado en la raíz) donde tengo unas imágenes (que están dentro de una carpeta llamada imagenes) y el menú que se repite en todas las páginas del sitio.

Luego tengo varios documentos que son por ejemplo: indiceproductos.php, indiceservicios.php, etc. en ellos llamo al include de esta manera:

Código:
<?php include("contenidocomun.php");?>
...hasta aquí se ve todo perfecto

Ahora el problema es el siguiente:
Dentro de la raíz tengo una carpeta llamada productos con varios documentos: producto_1.php, producto_2.php... producto_n.php y en ellos llamo al include de esta manera:

Código:
<? include ("../contenidocomun.php");?>
En teoría debería funcionar, dado que estoy volviendo a la raíz con ../ pero resulta ser que las imágenes no se ven, aparece la crucecita roja y si con el botón derecho del mouse veo las propiedades me da la siguiente ruta:
http://localhost/proyectos/mi_sitio/...enes/marco.jpg
es decir que busca las imágenes dentro del directorio productos siendo que la carpeta imágenes está en la raíz, el tema es que no se que ruta ponerle o si php está dando algún error no se...

Espero se haya entendido la idea.. muchas gracias de antemano.
__________________
Saludos!!!
Maru.-
  #2 (permalink)  
Antiguo 10/06/2006, 10:16
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
A ver, te aclaro, las imágenes las reconoce así porque tienes configuradas tus link de ellas por medio del cliente, mas no del servidor. Obviamente la solución implica el tener las imágenes con la URL absoluta, para que no ignore donde están las imágenes.
  #3 (permalink)  
Antiguo 10/06/2006, 10:18
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
tenés que tener en cuenta que los archivos incluidos no son independientes del archivo que los llama, sino que se "integran".
Aunque llames al archivo ../contenidocomun.php, las rutas relativas seguirán siendo relativas al archivo que lo llama.

Ejemplo:
tengo esta estructura:
./1.php
./a/2.php
./b/3.php

desde 3.php, llamo a 1.php:
include("../1.php");

Ahora, si quiero llamar a 2.php, es lo mismo hacerlo desde el código de 3.php que desde el código incluido de 1.php:

include("../a/2.php");

Si en 1.php llamaras a 2.php como "a/2.php", no te sirve, porque al ser incluido en 3.php, estaría buscando el archivo en una carpeta "a" dentro de "b".

SOLUCIÓN: usá $_SERVER['DOCUMENT_ROOT'] para apuntar a la raíz del sitio desde cualquier página.

Espero haberte aclarado un poco el problema.
Saludos.
  #4 (permalink)  
Antiguo 11/06/2006, 19:12
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Muchas gracias por sus respuestas.
Estuve probando con $_SERVER['DOCUMENT_ROOT'] pero sigo con el mismo problema, si me fijo en las propiedades de la imagen sigue apareciendo: http://localhost/proyectos/mi_sitio/imagenes/marco.jpg, tendré que configurar algo en php?
__________________
Saludos!!!
Maru.-
  #5 (permalink)  
Antiguo 12/06/2006, 08:38
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
Mmm... no.

Tienes que configurar tus imágenes así:
Código PHP:
<img src="<? echo $_SERVER['DOCUMENT_ROOT']; ?>/imagenes/marco.gif">
  #6 (permalink)  
Antiguo 12/06/2006, 09:13
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
¡NOOOOOOOOO!
lado2mx, acordate que la raíz del sistema no es la misma que la raíz del sitio, si pone
<img src="<? echo $_SERVER['DOCUMENT_ROOT']; ?>/imagenes/marco.gif">

no le va a servir, porque quedaría una ruta comenzando en la raíz del sistema, en vez de comenzar en la raíz del sitio......

Y explicando mejor lo que yo puse antes:
$_SERVER['DOCUMENT_ROOT'] para tener la referencia de la raíz del sitio (para archivos incluidos.)
/ al comienzo de la URL para apuntar a la raíz del sitio en HTML

Es decir, si quiero cargar el archivo /1/2/3/archivo.php desde cualquier otra página del sitio, hago

include("$_SERVER[DOCUMENT_ROOT]/1/2/3/archivo.php");

y si quiero cargarlo (para hacerlo como enlace) en el html, hago:

<a href="/1/2/3/archivo.php">archivo</a>

¿queda claro?


Saludos.
  #7 (permalink)  
Antiguo 12/06/2006, 10:16
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
Ahhm cierto, perdón por ese error..
  #8 (permalink)  
Antiguo 15/06/2006, 06:36
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Ante que todo muchas gracias por seguir ayudandome...

Comprendí bien tus instrucciones pero definitivamente debe haber algún problema porque sigo con el mismo inconveniente, en todo caso el tema de los includes se puede solucionar o poniendo todo de nuevo en la raíz como lo tenia (aunque no es lo ideal porque es un lío, son muchos archivos) o bien agregando un carpeta con las imágenes dentro del directorio en el que no se muestran las mismas, es un poco un parche todo esto pero sino funciona no queda otra.

En todo caso mi mayor preocupación es en los enlaces, porque por ejemplo en un subdirectorio no funciona lo que me indicaste, el problema siempre es dentro de los subdirectorios no se porque.

A partir de esto me surgió el planteo de que sucede al momento de subir el sitio al servidor remoto dado que las rutas para el servidor local son diferentes, este tema está posteado aquí: http://www.forosdelweb.com/showthrea...3&goto=newpost

Si me refiero al servidor local con esta dirección: http://localhost/proyectos/mi_sitio/...enes/marco.jpg
la raíz es http://localhost yo por mi parte cree un directorio llamado proyectos en donde tengo: sitio1, sitio2, etc... es decir que para que el sitio funcione correctamente sin hacerle ninguna modificación debería subirlo al servidor remoto dentro de proyectos/mi_sitio/

Bueno si alguien tiene alguna solución o sugerencia será bienvenida.
__________________
Saludos!!!
Maru.-
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 13:20.