Recientemente he subido mi primer proyecto realizado integramente en Zend Framework 2 con Skeleton Application a un servicio de hosting virtual a 1&1 (1and1) y encontré algunas pequeñas dificultades que me gustaría compartir.

Si bien no significaron mas que una pequeña demora en poner en marcha el servicio (poco más de una hora) me parece interesante comentarlo por si alguien quiere subir un proyecto en ZF2 a este servicio u otro y encuentre problemas similares. Tengo que decir que el servicio de hosting y el proyecto funcionan de maravilla. 😉

Cambiar el DocumentRoot del servicio a /public

Esto es fundamental y de hecho si has desarrollado en casi cualquier framework debes de recordar que el servicio web debes de configurarlo para que el raíz del servicio sea /public (o el correspondiente según el framework) y no el raíz. Obviamente has tenido que hacer lo mismo en tu desarrollo local. En 1&1 si tienes que cambiar el directorio raíz del servicio recuerda que desde que validas el cambio en el área de administración y que dicho cambio surta efecto transcurren 10 minutos, así que no lo dejéis para el último momento o configuradlo mientras subís el proyecto por FTP.

Error 500 al hacer click en los enlaces internos

Una vez subido tu proyecto cargas tu página principal pero los enlaces internos no se resuelven correctamente y te da un Error 500. La solución es añadir la siguiente linea en el .htaccess del directorio /public de nuestro proyecto:

RewriteBase /

Si utilizas el .htaccess de SkeletonApplication queda del siguiente modo:

RewriteEngine On
# IMPORTANT to work on 1and1
RewriteBase /
# The following rule tells Apache 
# that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
# The following rewrites all other 
# queries to index.php. The 
# condition ensures that if you are 
# using Apache aliases to do
# mass virtual hosting, the base 
# path will be prepended to 
# allow proper resolution of the 
# index.php file; it will work
# in non-aliased environments as well, 
# providing a safe, one-size 
# fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]

Este error tuve que investigarlo un poco más y de hecho no es sólo con ZF2. Por distintos comentarios que he leido por foros es muy frecuente con CMS como Drupal, WordPress, etc.

El servicio de 1&1 no permite tráfico por el puerto 25 desde el propio hosting

Este ya fue más curioso. Por distintas características del proyecto utilizaba para el envío de Emails en la aplicación como Transporte SMTP y no Sendmail ZF2 Mail Transport, por lo que tenía que establecer una conexión por el puerto 25. Sin embargo no era posible. Aunque el código funcionaba correctamente en mi servidor de desarrollo enviando emails por SMTP contra el propio servidor de 1&1, una vez subido devolvía un error de timeout.

Al parecer 1&1 restringe envío de correos por SMTP desde sus propios servidores de hosting, por lo que tienes que utilizar Sendmail.

Espero que sea de ayuda si alguien sube algún proyecto de Zend Framework 2 a 1&1. He de decir que por lo demás que la aplicación corre perfectamente y no hemos tenido ningún problema.

Comparte si te ha gustado

Autor:
Última actualización:

6 comentarios

    1. Si lo que quieres es cambiar el DocumentRoot en Apache para ZF2 lo que deberás de tener es configurado el site con la siguiente línea:

      DocumentRoot /var/www/directorio-proyecto/public

      Pero eso lo puedes hacer también en el panel de tu hosting apuntando el directorio a servir con el directorio /public al final.

  1. Hola estoy trabajando un proyecto en zend pero tengo un problema similar al que mencionaste anteriormente… mi proyecto me funciona bien de manera local pero cuando lo subo a un hosting no funcionan lo enlaces internos…
    siempre que quiero ir a otro enlace se redirecciona al mismo sitio que puedo hacer. de antemano muchas gracias…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

De acuerdo con lo dispuesto en el Reglamento (UE) 2016/679 de 27 de abril de 2016, consiento que mis datos sean tratados bajo la responsabilidad de Oscar Gascón Arjol para recibir respuesta a consultas. publicación de comentarios del blog y que las conserve mientras haya un interés mutuo para ello. Me doy por informado que tengo derecho a revocar este consentimiento en cualquier momento y a ejercer los de acceso, rectificación, portabilidad y supresión de mis datos y los de limitación y oposición al tratamiento dirigiéndome por email a me@oscargascon.es. También estoy informado de que puedo reclamar ante la autoridad de control a www.agpd.es.