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$ubicacion=explode('/',$_SERVER['PHP_SELF']);
//incluyo el archivo de configuracion
include_once($_SERVER['DOCUMENT_ROOT']."/".$ubicacion[1].'/configuracion.php');
//creo una instancia de la configuracion
$config= Config::singleton();
//cargo todas las clases
$this->loader($_SERVER['PHP_SELF']);
//obtengo el controlador que se envia por $_GET
$controller = $_GET['controlador'];
//obtengo el controlador que se envia por $_GET
if(isset($_GET['accion'])){ $action = $_GET['accion'];
}
//seteo el path
$path=$_SERVER['DOCUMENT_ROOT']."/".$ubicacion[1].'/website/';
//valido si no estoy en el root y seteo el nuevo path
if($ubicacion[2]!='index.php'){
$path=$_SERVER['DOCUMENT_ROOT']."/".$ubicacion[1]."/".$ubicacion[2]."/";
}
//seteo el controlador si esta vacio seteo el controlador por default
if( empty($controller) ){ $controller = 'indexController';
}
else{
$controller = $controller.'Controller';
}
//cargo el lenguaje del sistema
$idiomaActual=$config->get('lenguaje');
if(isset($_GET['idioma'])){ $idiomaActual = $_GET['idioma'];
}
elseif(isset($_COOKIE['idioma'])){
// Miramos que exista el archivo del idioma
if(file_exists($_SERVER['DOCUMENT_ROOT']."/".$ubicacion[1]."lenguajes/".$_COOKIE['idioma'].".php")){ $idiomaActual = $_COOKIE['idioma'];
}
}
// Incluimos el archivo del idioma seleccionado
// o el archivo por defecto si no se seleccionó
// idioma o si no se encuentra el archivo
include $_SERVER['DOCUMENT_ROOT']."/".$ubicacion[1]."/lenguajes/".$idiomaActual.".php";
//extraigo el nombre del controlador.
$nombre=explode('Controller',$controller);
//seteo la accion, si esta vacia seteo la acción por default
$action = 'index';
}
else {
$action = $action ;
}
//seteo la ruta del controlador
$controllerLocation = $path . 'controladores/' . $nombre[0] . '/'.$controller.'.php';
$vista=$path . 'controladores/' . $nombre[0] . '/templates/';
$config->set('vista',$vista);
//creo una instancia de los errores
//$errores= Errores::singleton();
//valido si existe el archivo sino ejecuta la excepcion
include_once( $controllerLocation );
} else {
trigger_error("No se encuentra el controlador $controllerLocation<br/>",E_USER_NOTICE); }
//valido si existe la clase sino ejecuta la excepcion
$cont = new $controller();
} else {
trigger_error( "No se encuentra la clase en el controlador $controller en $controllerLocation<br/>",E_USER_NOTICE); }
//valido si existe el método sino ejecuta la excepcion
$cont->$action();
} else {
trigger_error( "La Acción $action no existe $action en la clase $controller en $controllerLocation<br/>",E_USER_NOTICE); }
}
/**
* Cargador de clases
*
* @name loader
* @access public
* @version 0.1
* @since 0.1
* @author Lucas M. Sastre
*/
public function loader($path){
//separo los parametros de la url
//creo el path para las clases
$path=$_SERVER['DOCUMENT_ROOT']."/".$ubicacion[1].'/core/clases/';
//leeo el directorio
//valido si es un array y que tenga algun contenido
foreach ($dir as $k=>$v)
//recorro el directorio y valido que sea un archivo php
//incluyo el archivo
include_once($path.$v);
elseif ( is_dir($path.$v) && ($v != ".") && ($v != "..") && ($v != 'smarty') ) loader($path.$v."/");
}
}
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