Foros del Web » Programando para Internet » PHP »

Ayuda problema con rutas

Estas en el tema de Ayuda problema con rutas en el foro de PHP en Foros del Web. Hola, Tengo la siguiente estructura de directorios y tengo un follón de rutas tremendo. Partiendo que / es mi Document Root, tengo Fichero de la ...
  #1 (permalink)  
Antiguo 13/10/2010, 16:16
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Ayuda problema con rutas

Hola,

Tengo la siguiente estructura de directorios y tengo un follón de rutas tremendo.

Partiendo que / es mi Document Root, tengo

Fichero de la plantilla de correo
/libs/correo_plantillas/castellano/registro_completado.html

Clase de correo
/libs/enviaCorreo.class.php

Dentro de la clase del correo tengo una función para cargar la plantilla anterior.
$body = file_get_contents( "libs/correo_plantillas/castellano/registro_completado.html" );

Pero luego tengo el script donde llamo a la clase correo
/secciones/registro_user/activar_cuenta.php

Pero esta página/modulo a su vez está metido dentro de un /index.php (web modular...)

Para que me funcione y no me de un Warning: file_get_contents tengo que usar en la definición del metodo de la clase
$body = file_get_contents( "libs/correo_plantillas/castellano/registro_completado.html" );

Sin embargo, tengo otro script que no está en ningún modulo
/libs/registro_user/valida_form_registro.php

El cual no funciona si dejo la misma ruta de la plantilla
$body = file_get_contents( "libs/correo_plantillas/castellano/registro_completado.html" );

Tengo que pasarle una distinta
$body = file_get_contents( "../correo_plantillas/castellano/registro_completado.html" );

¿No hay ninguna más fácil de definir estas rutas? es un jaleo tremendo con esto de la web modular. Porque dependiendo de que ubicación de cada modulo/script tengo que pasarle una ruta diferente a mi clase? no puedo dejar las rutas absolutas en mi clase enviaCorreo.class.php y que no dependa de donde las esté llamando???



Gracias de antemano!
  #2 (permalink)  
Antiguo 13/10/2010, 16:26
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 9 meses
Puntos: 96
Respuesta: Ayuda problema con rutas

Saludos

jejeejej que locura haber

Normalmente se debe manejar un archivo config.php o algo similar que tenga la ruta completa de la ubicacion del proyecto ya que en dado caso que te cambies de servidor no tengas que cambiar todas las rutas de los archivos sino solamente uno
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 13/10/2010, 23:56
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Ayuda problema con rutas

Cita:
Iniciado por Nano_ Ver Mensaje
Saludos

jejeejej que locura haber

Normalmente se debe manejar un archivo config.php o algo similar que tenga la ruta completa de la ubicacion del proyecto ya que en dado caso que te cambies de servidor no tengas que cambiar todas las rutas de los archivos sino solamente uno
Pero el problema está en que no parece funcionar las rutas absolutas porque para llamarlo desde diferentes puntos de la aplicación tengo que usar

$body = file_get_contents( "libs/correo_plantillas/castellano/registro_completado.html" );

o

$body = file_get_contents( "../correo_plantillas/castellano/registro_completado.html" );

Según corresponda.

A mi me gustaría poder definirles una ruta absoluta donde están las plantillas y olvidarme de ellos. Y no funcionarme las rutas absolutas me trastoca bastante.

¿Alguna idea para sustituir los enlaces anteriores por unos que funcionen incluya donde incluya el script?

Gracias de antemano
  #4 (permalink)  
Antiguo 14/10/2010, 01:32
Avatar de Naguissa  
Fecha de Ingreso: junio-2008
Mensajes: 37
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Ayuda problema con rutas

Cita:
Iniciado por neodani Ver Mensaje
Pero el problema está en que no parece funcionar las rutas absolutas porque para llamarlo desde diferentes puntos de la aplicación tengo que usar

$body = file_get_contents( "libs/correo_plantillas/castellano/registro_completado.html" );

o

$body = file_get_contents( "../correo_plantillas/castellano/registro_completado.html" );

Según corresponda.

A mi me gustaría poder definirles una ruta absoluta donde están las plantillas y olvidarme de ellos. Y no funcionarme las rutas absolutas me trastoca bastante.

¿Alguna idea para sustituir los enlaces anteriores por unos que funcionen incluya donde incluya el script?

Gracias de antemano

Hola,

primero, en el archivo .php de acceso (ejemplo: index.php) o un archivo de configuración (config.inc.php) has de definir la ruta raíz:

Código PHP:
define("BASE_PATH"dirname(__FILE__)); 

Esto te da la carpeta del archivo ACTUAL. Por lo tanto, casi siempre se usa cosas como ésta:

Código PHP:
define("BASE_PATH"dirname(__FILE__) . "/../"); 


A partir de entonces puedes usar la constante en tus rutas para transformarlas en absolutas:

Código PHP:
include BASE_PATH "ruta/desde/la/raiz/de/la/app/archivo.inc.php"); 
  #5 (permalink)  
Antiguo 14/10/2010, 12:39
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Ayuda problema con rutas

Gracias Naguissa,

He probado el método que me dices, pero me sucede exactamente lo mismo.
Es decir, por mucho que yo defina una variable global como

define("BASE_PATH", dirname(__FILE__));

Eso me irá bien para todos los modulos que cargue en la web modular. Sin embargo el script que trata de enviar las plantillas no tiene porque estar en "modulo" y por tanto incluido dentro del index.php

El primero se encuentra aquí
/secciones/registro_user/activar_cuenta.php

El cual tiene un
$EnviaCorreo = new EnviaCorreo();
$EnviaCorreo->registroCompletado('Pepe','pepe','[email protected]' )

Debo definirle dentro del método registroCompletado, esta ruta, porque sino no encuentra la plantilla:

$body = file_get_contents( "libs/correo_plantillas/castellano/registro_completado.html" );

Y el segundo aquí
/libs/registro_user/valida_form_registro.php

Que tiene también otro método
$EnviaCorreo->activarCuenta('Pepe','pepe','[email protected]','xxx x');

Y a este método tengo que definirle la siguiente ruta para que encuentre la plantilla
$body = file_get_contents( "../correo_plantillas/castellano/activar_cuenta.html" );


Como ves son dos scripts totalmente diferentes pero ambos llaman a la misma clase, y ejecutan diferentes métodos. Estos scripts están ubicados en distintos lugares (e imagino que por llamar a la clase EnviaCorreo() dentro de ellos, es como si automáticamente se estuviese haciendo un include de sus métodos, y por eso dependiendo de donde incluya la clase está el problema...)

¿Consigo que se entienda mi problema? es un tanto lioso de explicar... (gracias por leer hasta aquí)

¿Se os ocurre como solucionarlo?

Muchas gracias de antemano
  #6 (permalink)  
Antiguo 14/10/2010, 15:36
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Ayuda problema con rutas

Al final agregué la linea

define("BASE_PATH", dirname(__FILE__));

dentro de la clase EnviaCorreo() y de esta forma utiliza el método que utilice desde cualquier parte de la aplicación las plantillas las encuentra

$body = file_get_contents( BASE_PATH.'/correo_plantillas/castellano/activar_cuenta.html' );

$body = file_get_contents( BASE_PATH.'/correo_plantillas/castellano/registro_completado.html' );

Gracias

Etiquetas: 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 21:16.