April 28th, 2012 Category: Programacion Zend Framework
30 Comments »
Increiblemente he recibido muchas preguntas sobre como instalar Zend Framework en un hosting donde no tengo acceso al virtual host, y a la configuracion de apache en general.
Realmente esto es muy simple, ahora vamos a ver porque.
Zend Framework no requiere que el proyecto donde se use, sea con MVC lo sugiere pero no hace falta. Por lo que no veamos la estructura de carpetas de Zend Framework como algo estricto.
Las carpetas que Zend_Tool crea cuando inicia un proyecto son las siguientes.
application/
docs/
library/
public/
tests/
Siendo public/ el punto de entrada a nuestra aplicacion, si nosotros configuramos el virtual host en apache vamos a apuntar el documentRoot de la aplicacion a la carpeta public, esto es debido a que esta carpeta contiene dos archivos escenciales para el funionamiento de la aplicacion creada en Zend Framework, index.php y .htaccess. Estos archivos van a procesar todas las urls de nuestra aplicacion y la van a redirigir al controller necesario, o al arcvhivo estatico. Teniendo en cuenta esto. Vamos a analizar como es hoy un hosting comun y corriente.
Hace mucho que no uso un hosting como los de elserver.com, datattec.com, y todos esos server que ofrecen servicios de hosting compartidos, no voy a hablar ni bien ni mal, prefiero no desviar el tema, si pueden paguense un VPS no son tan caros.
Cuando activamos nuestra cuenta en el hosting, le asignamos un dominio por ejemplo mipaginazf.com, nos van a dar una cuenta de FTP y con esa cuenta nosotros vamos a entrar desde filezilla, o el cliente FTP que usen. Cuando nos logueamos con nuestros datos podemos ver un listado de directorios con diferentes propositos
cgi/
public_ftp/
public_html/
backup/
etc… esto dependene del proveedor pero pueden tener diferentes nombres, mas o menos carpetas.
Lo que tenemos que tener como importante es que todos nuestros archivos web “deberian” ir en la carpeta public_html para ser interpretados, esta carpeta va a ser el punto de entrada de nuestro dominio mipaginazf.com
Digo deberian, con comillas (“) porque en nuestro caso tenemos una carpeta pubic/ que es nuestro punto de entrada, donde tenemos todos los archivos estaticos de nuestro proyecto y nuestro index.php y .htaccess que determinan que controller ejecutar.
Teniendo en cuenta esto, podriamos tener en el root/ de nuestro FTP las siguientes carpetas
cgi/
public_ftp/
public_html/
backup/
application/
docs/
tests/
library/
etc.
Los archivos index.php y .htacces como todo el resto del contenido estatico solo necesitamos moverlo a la carpeta public_html
Y asi de facil es configurar un proyecto en un hosting.
Obviamente antes de contratar un hosting, pregunten que soporte archivos .htaccess, tenga rewrite activo, y la version de php sea mayor a 5.2.x

Comentar
30 Responses
Lo ideal es que vaya todo en el root del ftp.
Si queres algo mas personalizado ya tenes que meterte demasiado a toquetear Zend Framework :(
Se puede pero no es trivial
Como mínimo, creo que sería bastante importante poder meter el archivo index.php y .htaccess dentro de otro directorio en /public_html, quedando /public_html/proyecto/ y el index.php y .htaccess, ya que si se tiene más de una web en el mismo hosting es lo mas normal.
De todas formas seguro que es de ayuda este post para mucha gente :)
Para el usuario agradecido, le recomiendo reflexione sobre dejar un proyecto Zend dentro de otra carpeta. Es bastante engorroso hace eso.
Le recomiendo que se cree varios subdomains (en cualquier hosting te permiten hacer n subdomains gratuitos) y apuntar cada uno de estos a una carpeta en el root de tu cuenta.
Te quedaría algo así:
/public_html <- root de tu cuenta
/proyecto1/
/proyecto1/public_html/ <-root del subdominio
/proyecto1/application/
/proyecto1/library/
/proyecto2/
/proyecto2/public_html/ <-root del subdominio
/proyecto2/application/
/proyecto2/library/
Cabe aclarar que para este tipo de proyectos, sólo necesitás una copia de Zend Framework, solucionando varios problemas de espacio y archivos duplicados. Te quedaría algo así
/public_html <- root de tu cuenta
/library/Zend
/proyecto1/
/proyecto1/public_html/ /library/Zend
/proyecto2/
/proyecto2/public_html/ /library/Zend
Espero que se haya entendido, cualquier duda, ahí tienen mi mail...
Saludos!!
Gracias PM.
Muchas gracias por postear estos articulos, la verdad son de gran utilidad. Y en este caso me ha servido mucho ya que tenía esa duda hace tiempo. No imaginaba que fuera tan simple.
Ahora me disculpo por hacer una pregunta sobre otro tema, pero no se donde hacerla.
Estoy tratando de validar en un form un campo file junto con un campo text, es decir, tengo que comparar el numero del campo text sea el mismo numero que contiene el nombre del archivo, pero cuando uso $rev->addValidator('ValidaRev', false, array('token' => 'archivo' )); el valor de archivo no pasa, si no solo el valor de MAX_FILE_SIZE,
Como puedo hacer para que pase el valor del $_FILES["archivo"]["name"] ?.
Si esta validacion la hago comparando campos de texto no hay drama, el asunto está con el campo de tipo file.
Muchas gracias.
Saludos
http://spanish.zendfw.com/zend-framework-en-servidores-sin-public_dir-public_html-o-en-subdirectorio/
Saludos y espero que les sirva.
resources.db.adapter = "PDO_MYSQL"
resources.db.params.hosts = "abc.mysql.db.internal"
resources.db.params.username = "abc_root"
resources.db.params.password = "av135"
resources.db.params.dbname = "abc_news123"
resources.db.params.charset = utf8
resources.db.isDefaultTableAdapter = true
pero en localhost funciona sin ningun problema.
Como podria solucionar eso?
muchas gracia spor anticipado
atentamente
César
y me sale siempre el error
Message: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
como dije , en local funciona si ningun problema
mysql_connect($db_host,$db_user,$db_pass) or die("Couldn't connect to database, please contact webtiser - ");
mysql_select_db($db_dbname);
y recibo true , si cambio algun dato de la autentificacion recibo el error.
puede ser algun problema en la cofiguracion de PHP? o quizas en el archivo .htaccess?
aunque al menos veo el Layout y las pantallas en las que no se hace consultas de base de datos.
disculpa el abuso de confianza, ya estuve muchas horas dandole vueltas al problema...
Gracias
En mi servidor compartido encuentro la linea (phpinfo):
mysql.default_socket /tmp/mysql.sock /tmp/mysql.sock
mientras que local :
mysql.default_socket MySQL MySQL
segun entiendo deberia configurar la aplicacion para que el socket de mysql apunte al configurado en el servidor compartido, es decir /temp/mysql.sock, intente agregar la linea resources.db.params.unix_socket = "/tmp/mysql.sock" al application .ini, pero no logro solucionar el problema, alguna idea?
Muchas gracais y Saludos
César
Saludos
César
Lo que hago es evitar la carpeta public, es decir sacar el index.php y el .htaccess al nivel de application, library, docs, etc. Solo que en este caso se tiene que cambiar el PATH de application dentro del index.php.
Lo que se tiene:
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
Lo que Hago:
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/application'));
con esto se podria poner la aplicación dentro de public_html o dentro de otro directorio.
Es una buena practica lo que estoy haciendo. Espero tu comentario y/o recomendaciones.
muchas gracias.
Solo que te quería pedir un poco de ayuda. La documentación de Zend Framework es malísima y hay cosas que no se explican bien ni siquiera en la comunidad que hacen uso de este framework.
Es por ello me gustaría pedirte que me orientes en alguna guía o forma de aprender a utilizar este framework para los proyectos de mi empresa.
Desde ya agradezco tu ayuda.
He estado siguiendo tus videos para comenzar a trabajar con Zend Framework y me han parecido excelentes. Ahora estoy creando un proyecto para un ramo en la universidad y tengo la siguiente duda: ¿cómo puedo acceder al proyecto desde otro pc? He intentado mediante la IP de mi laptop, puedo acceder a las carpetas que crea Zend_Tool y cuando llego al index.php (situado en public) veo el sitio sin las propiedades de css, es como si fuera sólo html.
Espero me puedas ayudar.
Muchas gracias y saludos.
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/bv000124/public_html/indexAdmin.php on line 26
Alguna idea sobre esto?
Debes tener algun signo mal escrito te falta un ; o algo.
He visto cada uno de ellos... y me han acelerado muchisimo el aprendizaje.
No querio hacerte consulta, sino pedirte consejos, o mejor aún, algun video tutorial (cortito) sobre decoradores de Zend_Form.
En este momento estoy luchando con eso... tratando de adaptarlos al bootstrap framework css.
Muchas gracias capo!.
Saludos
www.eldominio.com/index.php/elcontroller/elaction/
quiero saber si se puede www.eldominio.com/el cotroller/elaction. lo que quiero es evitar el index.php en la url .
puede hacerse eso??
Mi pregunta es, en un hosting sobre Windows Server, es decir IIS como es posible configurar Zend?..
De antemano muchas gracias. Saludos desde México.
me gustaria saber el motivo de este, y como solucionarlo. gracias
Veo que ha pasado algún tiempo desde tus publicaciones. Sólo darte las gracias por el material que hiciste y animarte a continuar con tu trabajo que a mi modo de ver ayuda de forma inimaginable a gente como yo que empieza en el tema serio del desarrolo de aplicaciones en PHP.
Gracias.




Tengo un par de preguntas.
Supongamos que los directorios
application/
docs/
library/
tests/
En vez de dejarlos ahí en el / del hosting, los quieres meter dentro de otro directorio para tenerlo todo un poco más "ordenado".
Y supongamos que dentro del public_html/ creamos un directorio llamado proyecto/ y ahí metemos el index.php y el .htaccess
Habría que hacer modificaciones en algunas partes del código para que esto funcionase no??
Un saludo y gracias.