Question

Je suis nouveau sur le Zend Framework.Je voudrais savoir comment mettre en œuvre zend framework sur un hébergement mutualisé.En raison de la zend framework structure de dossier tous afficher les fichiers sont mis dans le "public" du dossier.

Supposons que

"/" est le principal dossier racine pour moi et le public, c'est comme "/public"

de sorte que l'url devient "http://site/public/....bla bla..."

est-ce correct?

ou est-il une autre méthode?

je n'ai pas l'autorisation de créer un hôte virtuel.

alors, que faire?

J'espère que vous avez compris ma question.Si non, merci de me la poser.

Merci!!!!

Était-ce utile?

La solution

Je pense que la meilleure façon est d'enlever le .htaccess du répertoire public (structure Zend Framework Directory), et le mettre avec le contenu suivant dans votre répertoire « racine »:

 
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]

Autres conseils

Inclure ce fichier .htaccess sous votre chemin de base (qui est /../ public):

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]

Et quitter le .htaccess qui était sous le répertoire publc où il était.

Vous aurez 2 fichiers .htaccess, un sous le répertoire public (l'ordinaire de la documentation Zend Framework) et deuxième sous votre chemin de base (celui que j'ai posté ci-dessus).

Vous devez placer votre dossier public de projet dans le dossier www dans l'hôte, de sorte que votre adresse sera yourdomain.com/ devenir. Votre dossier de code source tels que la bibliothèque, les applications ... devrait être lieu au même niveau avec dossier www, pas à l'intérieur. Cette méthode favorisera la sécurité de votre site

En effet, il est pas le meilleur idead pour exécuter des applications Zend Framework sur un hébergement mutualisé. Je recommande vraiment obtenir un hébergement privé virtuel (VPS). Il y a de très bons et hostings bon marché là-bas avec Zend Framework et d'autres cadres déjà installés et régulièrement mis à jour. Je suis sur servergrove et il a été formidable jusqu'à présent!

Mais cela ne veut pas dire que vous ne pouvez pas le faire fonctionner sur un hébergement mutualisé. Vous avez juste besoin de travailler plutôt avec .htaccess. Mettez le contenu du dossier public dans votre Webroot et d'ajuster vos chemins dans le bootstrap.php, assurez-vous que tous les autres dossiers ne peuvent pas être les accès directement et utiliser l'approche habituelle de ZF de tout routage par votre index.php.

La réponse de ArneRie ne fonctionnait pas pour moi et j'ai finalement fini par utiliser solution Lorenzo Albertsons . Espérons que cela aide les autres à obtenir une solution plus rapide.

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]

En fait, je l'ai cherché et trouvé beaucoup de réponses (la plupart d'entre eux ici sur le SO), mais aucun d'entre eux travaillaient pour moi. Donc, j'ai finalement trouvé une solution - .htaccess sur répertoire racine:

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

Celui de http://framework.zend.com / wiki / affichage / ZFDEV / Configuration + Votre + URL + Rewriter et index.php on dir racine:

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

Celui de http://akrabat.com/ zend-cadre / zend-cadre-on-a-hôte partagé / Et ça marche pour moi, même s'il y a d'autres projets dir dans le dossier racine - forum comme environ. Nous avons pensé qu'il pourrait être utile à quelqu'un:)

Rob Allen a écrit une bonne solution

J'utilise Zend Framework 2 et cela a fonctionné pour moi. Alghough Je ne l'ai pas fait partie "Référencer fichiers publics face" lien ci-dessus.

Je code juste changé dans mon layout.phtml :

$basePath = $this->basePath();

à:

$basePath = $this->basePath();
if (defined('RUNNING_FROM_ROOT')) {
    $basePath .= 'public/';
}

Je suis dans la même situation et ont mis les bibliothèques zend dans un dossier en public comme « src » - et utiliser un .htaccess de Deny All. Vous aurez à jongler avec des sentiers de couple, mais il fonctionne très bien.

. . . Comment Magento utilise le Zend Framework ??? J'utilise XAMPP et je n'installer Magento localement sans modifier php.ini, ni http.conf hôte virtuel.

J'ai rencontré ce problème récemment et à travers ce fil, j'ai pu trouver une solution. J'utilise ZF2. Donc, tout ce que je devais faire était que les fichiers connexes zend dans un répertoire que nous pouvons nommer dire src. Ce répertoire résidera dans le répertoire public ou racine (comme /www)

  1. Créez un fichier .htaccess dans le 'src' dir et ajoutez la directive Deny de tous.

  2. Dans le fichier d'index, changer le répertoire de travail dans le dossier src en procédant comme suit:

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

... et vous êtes bon pour vous!

Configuration de l'hôte virtuel est généralement effectuée dans httpd.conf ou extra / httpd-vhosts.conf. Si vous utilisez httpd-vhosts.conf, assurez-vous que ce fichier est inclus par votre fichier principal httpd.conf. Certaines distributions Linux (ex: Ubuntu) package Apache de sorte que les fichiers de configuration sont stockés dans / etc / apache2 et de créer un fichier par hôte virtuel à l'intérieur dossier / etc / apache2 / sites activés. Dans ce cas, vous devez placer le bloc hôte virtuel ci-dessous dans le fichier / etc / apache2 / sites-enabled / ZF2-tutorial.

Assurez-vous que NameVirtualHost est défini et réglé sur « *: 80 » ou similaire, et ensuite définir un hôte virtuel le long de ces lignes:

Setting up the virtual host is usually done within httpd.conf or extra/httpd-vhosts.conf. If you are using httpd-vhosts.conf, ensure that this file is included by your main httpd.conf file. Some Linux distributions (ex: Ubuntu) package Apache so that configuration files are stored in /etc/apache2 and create one file per virtual host inside folder /etc/apache2/sites-enabled. In this case, you would place the virtual host block below into the file /etc/apache2/sites-enabled/zf2-tutorial.

Ensure that NameVirtualHost is defined and set to “*:80” or similar, and then define a virtual host along these lines:

 <VirtualHost *:80>
     ServerName zf2-tutorial.localhost
     DocumentRoot /path/to/zf2-tutorial/public
     SetEnv APPLICATION_ENV "development"
     <Directory /path/to/zf2-tutorial/public>
         DirectoryIndex index.php
         AllowOverride All
         Order allow,deny
         Allow from all
     </Directory>
 </VirtualHost>

Make sure that you update your /etc/hosts or c:\windows\system32\drivers\etc\hosts file so that zf2-tutorial.localhost is mapped to 127.0.0.1.

Assurez-vous que vous mettez à jour votre fichier / etc / hosts ou c:. \ Windows \ system32 \ drivers \ etc \ fichier hosts afin que ZF2-tutorial.localhost est mis en correspondance avec 127.0.0.1

Je suggère le principe le plus simple:Développer vos applications de façon à ce que index.php est dans votre racine (qui est encore mieux, toujours définir PUBLIC_PATH - dirname(__FILE__); dans votre index.php et de faire des liens relatifs à cette constante).Avec la demande et dossiers de la bibliothèque.Vous pouvez facilement de les rendre inaccessibles de l'extérieur à l'aide de deny from all dans .htaccess.

Le PUBLIC_PATH constante permet aussi quand votre public n'est pas public.(public ou html /public/html www (dans mon cas))

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top