Soy nuevo en Zend Framework. Me gustaría saber cómo implementar zend framework en un hosting compartido. Debido a que el zend framework estructura de carpetas
ver todos los archivos se colocan en el «público» de la carpeta.

Supongamos

«/» es la carpeta raíz principal para mí y el público es como
«/público»

para que la url se convierte en «http://site/public/. .. .bla bla…»

es esto correcto?

o hay algún otro método?

yo no tengo ningún tipo de permiso para crear un host virtual.

entonces, ¿qué hacer?

Espero que hayas entendido mi pregunta. Si no, por favor, que me la pida.

Gracias!

OriginalEl autor coderex | 2009-07-12

11 Comentarios

  1. 12

    creo que la mejor manera es eliminar el .htaccess del directorio público (Zend Framework estructura de Directorios) , y lo puso con el siguiente contenido en su directorio «raíz»:

     
    RewriteEngine On

    RewriteRule ^.htaccess$ - [F] RewriteCond %{REQUEST_URI} ="" RewriteRule ^.*$ /public/index.php [NC,L]

    RewriteCond %{REQUEST_URI} !^/public/.$ RewriteRule ^(.)$ /public/$1 RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^.*$ - [NC,L]

    RewriteRule ^public/.*$ /public/index.php [NC,L]

    hi – sólo me preguntaba ¿puede usted encuentra algo malo con los detalles que he publicado en la parte inferior de este hilo?
    Posible n00b pregunta: ¿Qué efecto tendrá esto en ZF de enrutamiento? Es decir, no el «/público» prefijo de ser parte de la url que ZF ve (supongo que a través de la $objeto de solicitud)? Como resultado, hacer todo ZF Rutas de ahora «/público» consciente? Que sería muy indeseable, ¿no?
    donde poner la configuración de entorno?
    Depende .. iam configuración en mi «index.php» aunque puede hacerlo en .htaccess..
    esto no funciona con los módulos! Si voy a http://www.domain.com/admin donde admin es el módulo, soy redirigido a http://www.domain.com/public/admin. cómo arreglar esto, por favor?

    OriginalEl autor opHASnoNAME

  2. 11

    Incluir este .htacces archivo con su ruta de acceso base (que es /../público):

    RewriteEngine On
    
    # Exclude some directories from URI rewriting
    #RewriteRule ^(dir1|dir2|dir3) - [L]
    
    RewriteRule ^\.htaccess$ - [F]
    
    RewriteCond %{REQUEST_URI} =""
    RewriteRule ^.*$ /public/index.php [NC,L]
    
    RewriteCond %{REQUEST_URI} !^/public/.*$
    RewriteRule ^(.*)$ /public/$1
    
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^.*$ - [NC,L]
    
    RewriteRule ^public/.*$ /public/index.php [NC,L]

    Y salir de la .htaccess que estaba bajo los públicos directorio donde estaba.

    Así que tienes 2 .archivos htaccess, uno bajo el directorio público (la ordinaria de Zend Framework documentación) y el segundo bajo su ruta de acceso base (el que he publicado anteriormente).

    hi – sólo me preguntaba ¿puede usted encuentra algo malo con los detalles que he publicado en la parte inferior de este hilo?
    He probado este, pero no encuentra otros directorios, los cuales se vinculan a la carpeta de la aplicación fuera de la carpeta pública. Otras simples páginas de trabajo

    OriginalEl autor Richard Knop

  3. 2

    Debe colocar su proyecto Público de la carpeta a la carpeta www en el host, por lo que su dirección se convertirá en yourdomain.com/.
    El código fuente de la carpeta de la biblioteca, aplicaciones… se debe colocar en el mismo nivel que la carpeta www, no dentro de ella. Este método va a promover la seguridad de su sitio

    Esta podría ser la respuesta más apropiada.

    OriginalEl autor Thang Nguyen

  4. 1

    De hecho, no es la mejor idead para ejecutar Zend Framework de aplicaciones en un hosting compartido. Realmente me recomiendo conseguir un hosting privado virtual (VPS). Hay muy buenos y baratos alojamientos con Zend Framework y otros marcos ya instalado y actualizado regularmente. Estoy en servergrove y ha sido genial!

    Pero esto no significa que usted no puede hacer que funcione en un hosting compartido. Usted sólo tiene que trabajar .htacess. Poner el contenido de la carpeta pública en su webroot y ajustar tus caminos en el bootstrap.php, asegúrese de que todas las otras carpetas no se accede directamente y el uso de la costumbre ZF enfoque de enrutamiento todo a través de su index.php.

    Detalles sobre mi propia implementación de este enfoque: bit.ly/btQGbh

    OriginalEl autor markus

  5. 1

    La respuesta de ArneRie no funcionó para mí y que finalmente terminó con Lorenzo Albertons solución. Espero que esto está ayudando a otros a obtener una solución más rápida.

    RewriteEngine On
    
    RewriteRule ^\.htaccess$ - [F]
    
    RewriteCond %{REQUEST_URI} =""
    RewriteRule ^.*$ /public/index.php [NC,L]
    
    RewriteCond %{REQUEST_URI} !^/public/.*$
    RewriteRule ^(.*)$ /public/$1
    
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^.*$ - [NC,L]
    
    RewriteRule ^public/.*$ /public/index.php [NC,L]

    OriginalEl autor lony

  6. 1

    De hecho, he buscado y encontrado un montón de respuestas (la mayoría de ellos aquí), pero ninguno de ellos funcionó para mí. Así que finalmente he encontrado una solución – .htaccess en la raíz dir:

    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php

    Este uno de http://framework.zend.com/wiki/display/ZFDEV/Configuring+Su+URL+Rw
    y index.php en la raíz dir:

    <?php 
    define('RUNNING_FROM_ROOT', true);
    include 'public/index.php';
    ?>

    Este uno de http://akrabat.com/zend-framework/zend-framework-on-a-shared-host/
    Y funciona para mí, incluso si hay otro proyecto de directorios en la carpeta de raíz – como el foro o algo así.
    Pensé que podría ser útil a alguien 🙂

    OriginalEl autor CRONUS

  7. 1

    También Rob Allen escribió una buena solución

    Estoy usando Zend Framework 2 y trabajó para mí.
    Alghough no he hecho parte de»hacer Referencia a la vista del público los archivos de» de enlace de arriba.

    Acabo de cambiar el código en mi diseño.phtml de:

    $basePath = $this->basePath();

    :

    $basePath = $this->basePath();
    if (defined('RUNNING_FROM_ROOT')) {
        $basePath .= 'public/';
    }
    Хорошее решение. А вы не знаете как можно установить этот basePath так, чтобы на всё приложение он был одинаковый? При таком решении придется в каждом виде, где есть вызов $this->basePath(), прописывать этот код. А хотелось бы в одном месте где-то задать его и везде бы он был один и тот же.
    Esto requeriría que todos los archivos de phtml a ser editado 🙁 cualquier método más corto para una rápida solución?

    OriginalEl autor Pavel Kostenko

  8. 0

    He estado en la misma situación y han puesto el zend bibliotecas en una carpeta pública como ‘src’ – y el uso de una .htaccess Deny from All. Usted tendrá que hacer malabares con un par de rutas, pero funciona bien.

    OriginalEl autor Justin

  9. 0

    . . . Cómo Magento utiliza Zend framework??? Estoy usando XAMPP y me hizo instalar Magento localmente sin necesidad de modificar el php.ini, http.conf ni host virtual.

    OriginalEl autor

  10. 0

    Me encontré con este problema recientemente y a través de este hilo yo era capaz de encontrar una solución. Estoy usando zf2. Así que todo lo que tenía que hacer era tener el zend relacionados con los archivos en un directorio al que nos puede decir el nombre de src. Este directorio va a residir en el público o el directorio raíz (como /www)

    1. Crear una .htaccess en el ‘src’ dir y agregar el rechazo de Toda la directiva.

    2. En el archivo de índice, cambiar el directorio de trabajo a la src carpeta haciendo lo siguiente:

      define('SRC_ROOT', 'src');
      chdir(SRC_ROOT);

    …y usted es bueno ir!

    OriginalEl autor Dapo Adediran

  11. -1

    Sugiero la simplicidad: Desarrollar tus aplicaciones de una manera que index.php es en su raíz (incluso mejor – siempre definir PUBLIC_PATH – dirname(__FILE__); en su index.php y hacer que los enlaces relativos a este constante). Junto con la solicitud y las carpetas de la biblioteca. Usted puede fácilmente hacerlos inaccesibles desde el exterior utilizando deny from all.htaccess.

    La PUBLIC_PATH constante también ayuda a la hora de su público no es público. (html pública o público /html/www (en mi caso))

    OriginalEl autor Tomáš Fejfar

Dejar respuesta

Please enter your comment!
Please enter your name here