Foros del Web » Programando para Internet » PHP »

Rutas + Smarty

Estas en el tema de Rutas + Smarty en el foro de PHP en Foros del Web. Muy buenas, estoy haciendo pruebas con Smarty, pero estoy atascado en algo sencillo en teoría. Mi idea es crear un archivo setup.php (fuera del directorio ...
  #1 (permalink)  
Antiguo 17/04/2004, 02:07
Avatar de zarate  
Fecha de Ingreso: septiembre-2001
Ubicación: Madrid
Mensajes: 164
Antigüedad: 16 años, 2 meses
Puntos: 0
Rutas + Smarty

Muy buenas, estoy haciendo pruebas con Smarty, pero estoy atascado en algo sencillo en teoría.

Mi idea es crear un archivo setup.php (fuera del directorio html) en el que se incluyen otros archivos comunes a todas las páginas como el de conectar a la bd, la autenticación y lo siguiente respecto a Smarty:

Código PHP:
   // smarty
   
define('SMARTY_DIR',"/Smarty/");
   require_once(
SMARTY_DIR.'Smarty.class.php');
   
   
// extendemos la clase
   
class mySmarty extends Smarty {
   
      function 
mySmarty() { // constructor
      
         
$this->template_dir SMARTY_DIR."templates/";
         
$this->compile_dir SMARTY_DIR."templates_c/";
         
$this->caching false;
         
      } 
// end constructor
      
   
// end mySmarty
   
   // creamos el nuevo objeto
   
$smarty = new mySmarty(); 
Ok, el caso es que si desde el propio setup.php intento mostrar una plantilla (para probar que funciona bien) va de lujo, el problema viene cuando quiero empezar a trabajar de verdad.

En otro archivo (ya en el directorio html) intento hacer lo siguiente:

Código PHP:
 include("../../../data/setup.php");
   
$smarty->display('admin_index.tpl'); 
Pues me tira el siguiente error:

Cita:
Fatal error: Failed opening required '/Smarty/core\core.get_include_path.php' (include_path='.;c:\php4\pear') in F:\www\eco\data\Smarty\Smarty.class.php on line 1781
Atención a la barra "\" que hay justo antes del archivo que quiere incluir. He probado a reinstalarla, y nada. Además, ya digo, que probando desde el propio setup.php funciona perfectamente.

Estoy con Apache + WinXP, + php 4.x y no tengo ni idea de por qué no rula.

Alguna idea feliz, please? Gracias.
__________________
Zárate
  #2 (permalink)  
Antiguo 17/04/2004, 10:08
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

En los include y require lo que pasa es una ruta del disco duro. Y como tu le pasas /smarty/ le estas dciendo que busque ese directorio en el directorio raiz del disco duro (en formato *nix). Es igual que si hubieses puesto c:/smarty/, que imagino que no estara por alli.

ASiq ue o usas rutas relativas (que segun veo no sera posible), o usas $_SERVER['DOCUMENT_ROOT'] o algo asi como referencia para las rutas.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 17/04/2004, 11:12
Avatar de zarate  
Fecha de Ingreso: septiembre-2001
Ubicación: Madrid
Mensajes: 164
Antigüedad: 16 años, 2 meses
Puntos: 0
Efectivamente, jugando un poco con $_SERVER['DOCUMENT_ROOT'], ya no da el problema.

Ahora tengo que hacer una pequeña detección para construir la ruta en función de si está en mi equipo local (windows) o en el servidor (linux).

Pues muchas gracias Josemi.

Bye
__________________
Zárate
  #4 (permalink)  
Antiguo 19/04/2004, 08:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si usas "DOCUMENT_ROOT" no tienes por qué hacer nada más extra para detectar la ruta absoluta de tus apliaciones en el servidor sea *NIX o Windows.

Document root en windows devuelve: c:\nose .... y en *Nix /var/tal o como corresponda. Tan sólo debes de definir tu estructura de directorios y no tendras que preocuparte si tu aplicación cae en un servidor Linux o Windows por ejemplo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 19/04/2004, 10:29
Avatar de zarate  
Fecha de Ingreso: septiembre-2001
Ubicación: Madrid
Mensajes: 164
Antigüedad: 16 años, 2 meses
Puntos: 0
Supongo que es un tema de configuración del Apache...

El caso es que DOCUMENT_ROOT me devuelve F:\www en mi equipo local, que es donde tengo el directorio web del Apache, en el cual hay directorios que corresponden a webs distintas, una de las cuales es la que nos atañe.

Eso no pasa en mi servidor Linux, ya que DOCUMENT_ROOT sí que me devuelve la carpeta HTML de la web, aunque supongo que en ese Apache hay más webs funcionando.

Es un buen momento para que alguien me explique cómo puedo modificar eso ^_^. Es broma, lo pondré en mi ToDo list de aprender cosas.

Muchas gracias anyway!
__________________
Zárate
  #6 (permalink)  
Antiguo 19/04/2004, 10:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Busca documentacion sobre virtualhost en apache.

De todas formas, como depende de la configuracion del servidor, en algunos casos me he encontrado que DOCUMENT_ROOT apunta al directorio raiz de la cuenta, no al raiz de la web (en los casos donde puedes acceder a directorios por encima del raiz de la web).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 09:41.