Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/06/2011, 08:29
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 7 meses
Puntos: 2135
Configuración Correcta de Zend Framework antes de trabajar

He visto muchos temas donde al empezar a trabajar, siguen todo como en el Quickstart y tienen luego problemas al subir a sus hosts con CPanel, o alguno similar porque estan en una subcarpeta, y en su local no lo estaban, o no crean un virtual host para trabajar por desconocimiento de como migrar a su servidor.

Por eso pongo esta pequeña guia de lo que tienen que hacer antes de empezar a desarrollar su aplicación, pensando en migrar a un servidor de estos.

Primero creamos nuestro proyecto con el ZF Tool de la manera habitual, vamos a suponer que esta en C:\web\sites\zfapp, después, creamos su virtual host, es un paso necesario y hay mucho material disponible:

http://www.maestrosdelweb.com/editorial/host/
http://framework.zend.com/manual/en/...e-project.html

Una vez que este listo, vamos a suponer que nuestro virtual host es http://zfapp.local (que apunta a C:\web\sites\zfapp\public), vamos a migrar todo el contenido de nuestra carpeta public a un subdirectorio dentro de esta, este subdirectorio se debe de llamar igual que la carpeta donde vas a subir los archivos en tu host (CPanel).

Por ejemplo si nuestra app va a vivir dentro de: http://host(cpanel).com/zfapp/ entonces creamos una carpeta dentro de public llamada zfapp y ahí pegamos el index.php, .htaccess, etc.

Es importante dejar todo lo demás (application, library, etc.) en sus carpetas originales, es decir en C:\web\sites\zfapp.

Lo siguiente a modificar es el index.php ubicado dentro de nuestra carpeta public/zfapp. Como las rutas creadas son diferentes a lo que vamos a utilizar, solo es cuestión de indicar correctamente el include path dentro de nuestro index.php.

Originalmente esta así:
Código PHP:
Ver original
  1. // Define path to application directory
  2. defined('APPLICATION_PATH')
  3.     || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
  4.  
  5. // Define application environment
  6. defined('APPLICATION_ENV')
  7.     || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
  8.  
  9. // Ensure library/ is on include_path
  10. set_include_path(implode(PATH_SEPARATOR, array(
  11.     realpath(APPLICATION_PATH . '/../library'),
  12. )));

Como nuestra carpeta application y library van a estar en un directorio superior, solo es cuestión de pasarlo (modificando la línea 2):
Código PHP:
Ver original
  1. // Define path to application directory
  2. defined('APPLICATION_PATH')
  3.     || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../../application'));
  4.  
  5. // Define application environment
  6. defined('APPLICATION_ENV')
  7.     || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
  8.  
  9. // Ensure library/ is on include_path
  10. set_include_path(implode(PATH_SEPARATOR, array(
  11.     realpath(APPLICATION_PATH . '/../library'),
  12. )));

Al hacer esto, le decimos a Zend que nuestro directorio raiz va a estar en un directorio más arriba al normal, también podemos cambiar realpath(dirname(__FILE__) . '/../../application') por la ruta exacta a nuestro directorio application (esto hace un poco más rápido la carga de Zend ya que así no tiene que buscar la ruta). Si haces esto, también se puede cambiar la ruta al directorio library para asegurar que todo sea lo más optimo posible (línea 11).

Con esto al entrar a http://zfapp.local/zfapp/ debemos de ver la pagina inicial de Zend sin problema, ahora al codificar es importante usar el baseUrl helper:
Código PHP:
Ver original
  1. /*
  2. * Prints:
  3. * <base href="/zfapp/" />
  4. */
  5. <base href="<?php echo $this->baseUrl(); ?>" />
  6.  
  7. /*
  8. * Prints:
  9. * <link rel="stylesheet" type="text/css" href="/zfapp/css/base.css" />
  10. */
  11. <link rel="stylesheet" type="text/css"
  12.      href="<?php echo $this->baseUrl('css/base.css'); ?>" />

Para que en la pagina web se pueda ver correctamente todos los assets.

Con esto al migrar un hosting como CPanel va a ser muy simple:
- Primero subimos nuestra carpeta application, y library a un directorio por arriba de la carpeta httpdocs.
- Posteriormente creamos el subdirectorio dentro de httpdocs (zfapp), y ahí subimos la carpeta zfapp con todos los elementos (.htaccess, index.php, etc.).

Con eso la migración es sencilla y podemos desarrollar sin problemas a la hora de hacer el release de la aplicación.

Saludos.

Última edición por GatorV; 23/01/2012 a las 14:08