Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/02/2010, 20:37
Avatar de destor77
destor77
 
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
problemas de ruta en servidores distintos

Hola,
estoy teniendo problemas de rutas en un sitio que estoy haciendo, en mi servidor local anda bien pero en el servidor del cliente no, lo que se pierde son las rutas de los directorios el codigo que uso es este:
Código PHP:
Ver original
  1. $ubicacion=explode('/',$_SERVER['PHP_SELF']);
  2.            
  3.            //incluyo el archivo de configuracion
  4.            include_once($_SERVER['DOCUMENT_ROOT']."/".$ubicacion[1].'/configuracion.php');
  5.            
  6.            //creo una instancia de la configuracion
  7.            $config= Config::singleton();
  8.            
  9.            
  10.            
  11.            //cargo todas las clases
  12.            $this->loader($_SERVER['PHP_SELF']);
  13.                    
  14.            //obtengo el controlador que se envia por $_GET
  15.            $controller = $_GET['controlador'];
  16.            
  17.            //obtengo el controlador que se envia por $_GET
  18.            if(isset($_GET['accion'])){
  19.             $action = $_GET['accion'];
  20.            }
  21.            //seteo el path
  22.            $path=$_SERVER['DOCUMENT_ROOT']."/".$ubicacion[1].'/website/';
  23.                      
  24.            //valido si no estoy en el root y seteo el nuevo path
  25.            if($ubicacion[2]!='index.php'){
  26.                $path=$_SERVER['DOCUMENT_ROOT']."/".$ubicacion[1]."/".$ubicacion[2]."/";                    
  27.            }           
  28.        
  29.            //seteo el controlador si esta vacio seteo el controlador por default
  30.            if( empty($controller) ){
  31.              $controller = 'indexController';
  32.            }
  33.            else{
  34.              $controller = $controller.'Controller';
  35.            }
  36.            
  37.            
  38.            //cargo el lenguaje del sistema
  39.            $idiomaActual=$config->get('lenguaje');
  40.            if(isset($_GET['idioma'])){
  41.             setcookie ("idioma", $_GET['idioma'], time () + 7*24*60*60);
  42.             $idiomaActual = $_GET['idioma'];
  43.            }
  44.            elseif(isset($_COOKIE['idioma'])){
  45.  
  46.             // Miramos que exista el archivo del idioma
  47.             if(file_exists($_SERVER['DOCUMENT_ROOT']."/".$ubicacion[1]."lenguajes/".$_COOKIE['idioma'].".php")){
  48.                 $idiomaActual = $_COOKIE['idioma'];
  49.             }
  50.            }
  51.  
  52.            // Incluimos el archivo del idioma seleccionado
  53.            // o el archivo por defecto si no se seleccionó
  54.            // idioma o si no se encuentra el archivo
  55.            include $_SERVER['DOCUMENT_ROOT']."/".$ubicacion[1]."/lenguajes/".$idiomaActual.".php";
  56.  
  57.            //extraigo el nombre del controlador.
  58.            $nombre=explode('Controller',$controller);
  59.            
  60.            //seteo la accion, si esta vacia seteo la acción por default
  61.            if( empty($action) ){
  62.                $action = 'index';
  63.            }
  64.            else {
  65.                $action = $action ;
  66.            }
  67.            
  68.            //seteo la ruta del controlador
  69.            $controllerLocation =  $path . 'controladores/' . $nombre[0] . '/'.$controller.'.php';
  70.            $vista=$path . 'controladores/' . $nombre[0] . '/templates/';
  71.            $config->set('vista',$vista);
  72.          
  73.            //creo una instancia de los errores
  74.            //$errores= Errores::singleton();
  75.            
  76.            //valido si existe el archivo sino ejecuta la excepcion
  77.            if( file_exists( $controllerLocation ) ) {
  78.                  include_once( $controllerLocation );
  79.            } else {
  80.                 trigger_error("No se encuentra el controlador $controllerLocation<br/>",E_USER_NOTICE);
  81.            }
  82.  
  83.            //valido si existe la clase sino ejecuta la excepcion
  84.            if( class_exists( $controller, false ) ) {
  85.                   $cont = new $controller();
  86.            } else {
  87.                   trigger_error( "No se encuentra la clase en el controlador $controller en $controllerLocation<br/>",E_USER_NOTICE);
  88.            }
  89.            
  90.            //valido si existe el método sino ejecuta la excepcion
  91.            if( method_exists( $cont, $action ) ) {
  92.                   $cont->$action();
  93.            } else {
  94.                    trigger_error( "La Acción $action no existe $action en la clase $controller en $controllerLocation<br/>",E_USER_NOTICE);
  95.            }
  96.  
  97.            
  98.  
  99.      }
  100.      /**
  101.       * Cargador de clases
  102.       *
  103.       * @name loader
  104.       * @access public
  105.      *  @version 0.1
  106.      *  @since 0.1
  107.      *  @author Lucas M. Sastre
  108.       */
  109.      public function loader($path){
  110.          //separo los parametros de la url
  111.         $ubicacion=explode('/',$path);
  112.        
  113.         //creo el path para las clases
  114.         $path=$_SERVER['DOCUMENT_ROOT']."/".$ubicacion[1].'/core/clases/';
  115.        
  116.         //leeo el directorio
  117.         $dir = scandir($path);         
  118.         //valido si es un array y que tenga algun contenido
  119.         if ((is_array($dir)) && (count($dir) > 0))
  120.                 foreach ($dir as $k=>$v)
  121.                     //recorro el directorio y valido que sea un archivo php                                
  122.                     if ( !(is_dir($path.$v)) && ( file_exists($path.$v) ) && ($v != ".")  && ($v != "..") && (strtolower(end(explode(".", $v))) == 'php') )
  123.                         //incluyo el archivo
  124.                         include_once($path.$v);
  125.                     elseif ( is_dir($path.$v) && ($v != ".") && ($v != "..") && ($v != 'smarty') )
  126.                         loader($path.$v."/");
  127.      }
  128.      
  129.      
  130.      
  131.      
  132. }

entonces si yo entro a localhost/elsitio o localhost/elsitio/admin todo anda correctamente, pero si subo todos los archivos al servidor del cliente no anda el sitio me tira error de que no encuentra los archivos y cuando hago un print_r de $ubicacion=explode('/',$path); veo que no tienen el mismo contenido que en mi servidor local, tiene un indice menos en vez de tener:
$ubicacion[0],$ubicacion[1],$ubiciacion[2]
tengo:
$ubicacion[0],$ubicacion[1]

por lo tanto tengo que cambiar todo el codigo para que me detecte correctamente las rutas, estoy haciendo algo mal?

salu2