Foros del Web » Programando para Internet » PHP »

problema con rutas a clases

Estas en el tema de problema con rutas a clases en el foro de PHP en Foros del Web. Hola colegas, resulta que tengo 2 carpetas en el directorio raiz de mi proyecto *db : esta carpeta tiene mis archivos de conexión *lib : ...
  #1 (permalink)  
Antiguo 08/04/2010, 09:21
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
problema con rutas a clases

Hola colegas, resulta que tengo 2 carpetas en el directorio raiz de mi proyecto

*db : esta carpeta tiene mis archivos de conexión
*lib : aqui se encuentran todas mis clases y en cada uno llamo a una instancia de la conexión usando los archivos de conexión que estan en la carpeta db

Código PHP:
require_once 'db/Db.class.php'
y en mis archivos de proyecto llamo normalmente a las librerias:

Código PHP:
require_once 'lib/Miclase.class.php'
Hasta ahi todo bien pero resutla que tengo una carpeta *CMS donde se encuentra mi proyecto para el administrador y necesito acceder a mis clases que estan en la carpeta *lib y el problema es que uso una ruta relativa para retroceder de directorio:

Código PHP:
require_once '../lib/Miclase.class.php'
Y bueno, el error que me aparece es que no encuentra el archivo de conexión que esta en la carpeta *db ya que también debería "retroceder" de directorio....

Warning: require_once(dbConfig/Db.class.php) [function.require-once]: failed to open stream: No such file or directory in C:\AppServ\www\xxxx\lib\Miclase.class.php on line 3

Código PHP:
Fatal error: require_once() [function.require]: Failed opening required 'dbConfig/Db.class.php' (include_path='.;C:\php5\pear'in C:AppServwwwxxxxlibMiclases.class.php on line 3 
he probado con $_SERVER["DOCUMENT_ROOT"]
y con dirname(__FILE__) pero no tengo resultado... que debo hacer? usar rutas absolutas en mis clases al llamar a la conexión? que comando usar? espero me puedan ayudar!
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 08/04/2010, 09:29
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: problema con rutas a clases

¿Desde donde se incluye el archivo de la base de datos?
Desde tus librerias? o desde los archivos del proyecto?
¿No te lo incluye retrocediendo con "../" ?

Un saludo
  #3 (permalink)  
Antiguo 08/04/2010, 09:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: problema con rutas a clases

Por eso siempre es mejor usar rutas absoultas desde la raiz de tu disco duro, o definir un path base para todo tu proyecto.

Saludos.
  #4 (permalink)  
Antiguo 08/04/2010, 09:53
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: problema con rutas a clases

El archivo de base de datos las incluyo desde las librerias y en mi proyecto solo llamo a las librerias...

Ahora he realizado un cambio en cada uno de mis librerias, por ejemplo en mi Miclase.class:

Código PHP:
$path $_SERVER['DOCUMENT_ROOT'];
/*Incluimos el fichero de la clase Db*/
require_once $path.'/mi_proyecto/db/Db.class.php';
/*Incluimos el fichero de la clase Conf*/
require_once $path.'/mi_proyecto/db/Conf.class.php';


class 
Miclase
       public function 
getCompanyName(){
             require 
$_SERVER['DOCUMENT_ROOT'].'/mi_proyecto/db/config.php';    
            
$this->_company=$company;
            
$var=$this->_company;
            return 
$var;
     } 

De esta forma puedo acceder, tengo una solución temporal ... pero como se puede apreciar, aparte del $_SERVER['DOCUMENT_ROOT'] tengo que agregar el nombre de mi carpeta de mi proyecto (localmente) porque el server solo me toma el "C:/Appserv/www/" .... Ahora como defino un path incluyendo también la carpeta contenedora de mi proyecto, sin que esto afecte cuando suba mi proyecto a un servidor, osea un path que funcione tanto localmente como en un servidor de hosting....


Editando: bueno encontre otra solución un poco más limpia:

en cada clase hice esto:

Código PHP:
define("REGISTRY_CLASSES",  $_SERVER['DOCUMENT_ROOT']."/mi_proyecto/");
require_once 
REGISTRY_CLASSES.'/db/Db.class.php'
Pero aún tengo que incluir la carpeta que contiene mi proyecto... localmente estoy obligado a agregarle esto?
__________________
Quitenme la vida pero no la bebida.

Última edición por cesarpunk; 08/04/2010 a las 10:03

Etiquetas: clases, 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 04:57.