Foros del Web » Programando para Internet » PHP »

include

Estas en el tema de include en el foro de PHP en Foros del Web. he visto por ahi que en siempre que hagamos referencia a archivos, imagenes o lo que sea...que tratemos de evitar lo de ../ y por ...
  #1 (permalink)  
Antiguo 06/12/2007, 14:41
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 5 meses
Puntos: 2
include

he visto por ahi que en siempre que hagamos referencia a archivos, imagenes o lo que sea...que tratemos de evitar lo de ../ y por tanto es mejor que se use la ruta completa.
yo e usao algo asi
<?php include($_SERVER['DOCUMENT_ROOT']."/capas_comunes/cabecera.inc");?>

esto en apache me funcionaba en el localhost...xo..lo e subido al servidor y no me las encuentra....y el problemas me parece que esta en que el $_SERVER['DOCUMENT_ROOT']. no es el mismo que en mi apache.......

como puedo referenciar entonces la ruta completa?
  #2 (permalink)  
Antiguo 06/12/2007, 15:42
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: include

bueno, estas equivocado de la A a la Z, es mejor usar rutas relativas en lugar de absolutas, asi no te pasara eso que te ocurre ahora.
por ejemplo, en tu localhost tienes /proyecto.com/img/foto.jpg, esa ruta se pierde en el server en internet, pues se convierte a /img/foto.jpg, entonces es mejor usar rutas del tipo: img/foto.jpg , fijate que no tiene el / delante, y si tienes que subir un directorio, pues usas el ../ tantos directorios debas subir.

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #3 (permalink)  
Antiguo 06/12/2007, 15:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: include

rogertm, Blade_Storm no esta equivocado, es mejor usar rutas absolutas, así te evitas problemas de encontrar archivos y hace tu código mas fácil de leer.

Blade_Storm, prueba hacer un var_dump a la variable de $_SERVER para que veas que datos te esta generando, yo no he tenido problemas con esa variable pero puede ser que tengas un servidor que no sea Apache y no te este creando la variable.

Saludos.
  #4 (permalink)  
Antiguo 06/12/2007, 16:02
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 5 meses
Puntos: 2
Re: include

ok probare. lo que e pensao que puede ser el motivo es que igual $_SERVER['DOCUMENT_ROOT'] en mi apache si se cumple que es el inicio de las carpetas...........xo en el servidor a saber $_SERVER['DOCUMENT_ROOT'] lo que devolvera. asi que supongo que el problema es ese...que eso en el servidor no me devuelve lo mismo que en mi servidor apache.

k opinas? yo creo que tiene que ser eso fijo porque sino no me lo explico....
  #5 (permalink)  
Antiguo 06/12/2007, 16:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: include

Como te comento lo mejor es usar un var_dump( $_SERVER ); para que veas las diferencias.

Saludos.
  #6 (permalink)  
Antiguo 06/12/2007, 16:20
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 5 meses
Puntos: 2
Re: include

vale he hecho eso y ya e visto la diferencia
en el servidor es /www/ mientras que en mi apache es

en mi apache es "C:/wamp/www/"


por tanto creo que en el path tendre que agregar algo mas para que me funcione en el servidor..


un saludo
  #7 (permalink)  
Antiguo 07/12/2007, 10:09
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: include

Cita:
Iniciado por GatorV Ver Mensaje
rogertm, Blade_Storm no esta equivocado, es mejor usar rutas absolutas, así te evitas problemas de encontrar archivos y hace tu código mas fácil de leer.

Blade_Storm, prueba hacer un var_dump a la variable de $_SERVER para que veas que datos te esta generando, yo no he tenido problemas con esa variable pero puede ser que tengas un servidor que no sea Apache y no te este creando la variable.

Saludos.
ño moderador, y lo buena que me quedo la frase de la A a la Z
a ver, para aclararme este asunto, yo entiendo como una ruta absoluta esto:
Cita:
C:\Documents and Settings\rogertm\Mis documentos
otro ejemplo:
Cita:
C:\wamp\www\proyecto\archivos\archivo.html
OK? que desde el punto de vista de la estructuracion de la web seria:
Cita:
/proyecto/archivos/archivo.html
NO?

ahora, no es mejor, si desde el index de mi proyecto llamo a archivo.html asi?
Cita:
archivos/archivo.html
esto es una ruta relativa. verdad?

y si desde archivo.html quiero llegar al index:
Cita:
../index.html
o es que estamos hablando de cosas diferentes???
me he perdido de algo???

espero como siempre moderador me aclare este temita, saludos y gracias de antemano
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #8 (permalink)  
Antiguo 07/12/2007, 10:15
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 5 meses
Puntos: 2
Re: include

pfff sigo sin saber como arreglar mi problema...pk en el servidor lo de document root me devuelve /www/ y al parecer ese no debe ser mi directorio raiz.........
tonces habia pensao concatenar a lo que me devuelva documentroot una variable xa llegar al path del directorio raiz........pero claro...esa variable deberia ser una constante que este en un archivo externo.
y tonces estamos en la misma...pk cuando intente mediante un include incluir el archivo de constantes....no voy a saber como referenciarlos....es la pescadilla que se muerde la cola...

si tienen alguna idea.....

((en vuestros hosting lo de documentroot os sirve?)
  #9 (permalink)  
Antiguo 07/12/2007, 10:18
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 5 meses
Puntos: 2
Re: include

Cita:
Iniciado por rogertm Ver Mensaje
ño moderador, y lo buena que me quedo la frase de la A a la Z
a ver, para aclararme este asunto, yo entiendo como una ruta absoluta esto:

otro ejemplo:

OK? que desde el punto de vista de la estructuracion de la web seria:

NO?

ahora, no es mejor, si desde el index de mi proyecto llamo a archivo.html asi?

esto es una ruta relativa. verdad?

y si desde archivo.html quiero llegar al index:


o es que estamos hablando de cosas diferentes???
me he perdido de algo???

espero como siempre moderador me aclare este temita, saludos y gracias de antemano
el problema que veo a lo tuyo es el siguiente... imagiante que en un momento dado..el index de tu proyecto...cambia de carpeta y lo pones en otra carpeta por motivos tuyos...tonces como todos su paths dependian de su ubicacion...pues tendras que cambiar todo mientras que si todos los paths los haces desde atrás del todo hasta adelante....si tu mueves el index a otro sitio....lo que use dentro el index seguira funcionando ya que los paths son absolutos (desde el documento raiz hasta donde esten los includes de ese index)
  #10 (permalink)  
Antiguo 07/12/2007, 10:38
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 5 meses
Puntos: 2
Re: include

Cita:
Iniciado por Blade_Stom Ver Mensaje
pfff sigo sin saber como arreglar mi problema...pk en el servidor lo de document root me devuelve /www/ y al parecer ese no debe ser mi directorio raiz.........
tonces habia pensao concatenar a lo que me devuelva documentroot una variable xa llegar al path del directorio raiz........pero claro...esa variable deberia ser una constante que este en un archivo externo.
y tonces estamos en la misma...pk cuando intente mediante un include incluir el archivo de constantes....no voy a saber como referenciarlos....es la pescadilla que se muerde la cola...

si tienen alguna idea.....

((en vuestros hosting lo de documentroot os sirve?)
alguna otra forma para poder llegar hasta el directorio raiz para que a partir de ahi vaya haciendo los paths absolutos?
  #11 (permalink)  
Antiguo 07/12/2007, 10:42
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: include

Cita:
Iniciado por Blade_Stom Ver Mensaje
vale he hecho eso y ya e visto la diferencia
en el servidor es /www/ mientras que en mi apache es

en mi apache es "C:/wamp/www/"


por tanto creo que en el path tendre que agregar algo mas para que me funcione en el servidor..


un saludo
para mi esta claro, he aqui tu problema, el tal document root te da la ruta fisica de la carpeta donde guardas tus proyectos, lo acabo de probar desde dos carpetas diferentes y ninguna en el directorio raiz:
Cita:
D:/WAMP_SERVER/wamp/www
OK? en el server que tienes en internet debe cambiar, imaginate que tenga una ruta asi:
Cita:
C:\Documents and Settings\rogertm\Mis documentos
si te doy el archivo que la contiene y lo pones entumaquina:
Cita:
C:\Documents and Settings\Blade_Stom\Mis documentos
creo que se pierde verdad?
yo mas o menos entiendo lo que quieres lograr, pero no creo que $_SERVER['DOCUMENT_ROOT'] sea la variable apropiada, revisa a ver cual te puede servir:
http://www.php.net/manual/es/reserved.variables.php

Cita:
Iniciado por Blade_Stom Ver Mensaje
el problema que veo a lo tuyo es el siguiente... imagiante que en un momento dado..el index de tu proyecto...cambia de carpeta y lo pones en otra carpeta por motivos tuyos...tonces como todos su paths dependian de su ubicacion...pues tendras que cambiar todo mientras que si todos los paths los haces desde atrás del todo hasta adelante....si tu mueves el index a otro sitio....lo que use dentro el index seguira funcionando ya que los paths son absolutos (desde el documento raiz hasta donde esten los includes de ese index)
mmmmmmm, perdon, pero esta parte no la entendi muy bien, ahora, a ver si es como pienso, yo, lo que suelo hacer es modular, y cargo todo desde el index del proyecto, no se, es que no entiendo bien lo que me dices, asi todas las rutas seran de afuera pa dentro???

seguiremos informando

saludos
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #12 (permalink)  
Antiguo 07/12/2007, 10:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: include

Lo que les recomiendo es usar dos variables con paths absolutos, una variable tiene el path absoluto al directorio desde el sistema de archivos, y el otro desde URL, asi evitan perderse en los directorios.

Un ejemplo podira ser asi:
Código PHP:
$rootDir "/home/myuser/public_html/proyecto/";
$rootURL "/proyecto/"
Asi por decir si necesitan incluir por decir un archivo config:
Código PHP:
include( $rootDir "config.php" ); 
Pero si necesitan llamar a una imagen:
Código PHP:
<img src="<?php echo $rootURL "imagenes/imagen1.jpg"?>" border="0">
Saludos.
  #13 (permalink)  
Antiguo 07/12/2007, 10:58
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 5 meses
Puntos: 2
Re: include

pero yo en el servidor como consigo el directorio raiz?

es decir yo todo lo que voy a referenciar va a ser desde el directorio raiz hasta adelante.

por ejemplo yo en mi hosting tengo lo siguiente:

index.php
carpeta1
carpeta2
carpeta3

carpeta 1 contiene:
lateral
encabezado

carpeta 2 contiene
archivo1.php (este archivo tiene un include file1.inc)
archivo2.php

carpeta 3 contiene
file1.inc
file2.inc


ENTONCES PARA HACER EL INCLUDE QUE PONGO ARRIBA ME GUSTARÍA hacer a travez del directorio raiz, es decir la ruta sería
include ( "DIRECTORIO_RAIZ/carpeta3/file1.inc" )

eso que pongo ahi directorio raiz, es lo que me gustaría obtener de alguna forma para que siempre que yo haga includes o cualquier cosa que referencia archivos...pueda hacerlo desde ahi?
no quiero usar cosas de estas en plan ../carpeta3/file1.inc ya que si en algun momento archivo1.php lo cambio de lugar tambien tendre que empezar a cambiar las rutas que tiene dentro, mientras que si hago referencias desde el directorio_raiz no tendre que modificar nada.

el problema es.......... el directorio raiz en mi servidor apache lo obtengo con $_SERVER['DOCUMENT_ROOT'] ya que me devuelve "C:/wamp/www/" que en realidad es el directorio raiz de mi servidor pero eso mismo cuando lo subo a mi hosting en internet me devuelve www/ y no me funciona....osea que parece ser que eso que me devuelve no es el directorio raiz que me esta dando el proveedor de hosting.

entonces necesito obtener el directorio raiz del hosting....para hacerlos paths aboslutos

axias...
  #14 (permalink)  
Antiguo 07/12/2007, 11:01
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: include

a ver, yo cuando armo la web, modulo todo, como dice el tutorial de zonaphp.com:
http://www.zonaphp.com/creando-webs-modulares/

y mi archivo de configuracion queda asi:
Código PHP:
<?php
/*
* Archivo de configuración para nuestra aplicación modularizada.
* Definimos valores por defecto y datos para cada uno de nuestros módulos.
*/


define('MODULO_DEFECTO''home');
define('LAYOUT_DEFECTO''layout_simple.php');
define('MODULO_PATH'realpath('./modulos/'));
define('LAYOUT_PATH'realpath('./layouts/'));

$conf['home'] = array(
    
'archivo' => 'home.php',
    
'layout' => LAYOUT_DEFECTO);


$conf['articulo'] = array(
    
'archivo' => 'art.php');
?>
como ven tengo definido los path de los modulos, includes y cuanta cosa decida definir, ahora, deberia definir el path absoluto tambien?
es que nunca me ha pasado lo que a Blade_Stom, me desayuno ahora con algo asi, hasta ahora nunca he tenido la necesidad de mover nada, sera porque me hago un plan antes de comenzar a hacer algo, estructuro todo, lo pinto todo en un papel .

bueno, de todas formas:
Cita:
nunca te acostaras sin haber aprendido algo
autor: rogertm
saludetes
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #15 (permalink)  
Antiguo 07/12/2007, 11:05
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: include

Blade_Stom, te recomiendo el tutorial de zonaphp sobre web modulares, tal vez se te acaben los problemas :P
http://www.zonaphp.com/creando-webs-modulares/
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #16 (permalink)  
Antiguo 07/12/2007, 11:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: include

Puedes usar el siguiente script para averiguar el directorio raiz:
Código PHP:
<?php
echo getcwd();
?>
Subelo como index.php en tu carpeta raiz y te desplegara la ruta actual

Saludos.
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 17:08.