Frage

Ich bin neu in Zend Framework. Ich würde gerne wissen, wie Zend Framework auf einem Shared-Hosting zu implementieren. Wegen der Zend Framework Ordnerstruktur Alle Anzeigen von Dateien sind die „public“ Ordner speichern in.

Angenommen

„/“ ist der Hauptstammordner für mich und Öffentlichkeit ist wie "/ Public"

, so dass die URL wird „ http:. // site / public / .. .bla bla ... „

ist das richtig?

oder gibt es eine andere Methode?

i habe keine Erlaubnis, einen virtuellen Host zu erstellen.

so was tun?

Ich hoffe, dass Sie meine Frage verstanden. Wenn nicht, kann man mich fragen.

Danke!

War es hilfreich?

Lösung

Ich denke, der beste Weg ist, die .htaccess aus dem öffentlichen Verzeichnis (Zend Framework Verzeichnisstruktur), und setzen Sie sie mit folgendem Inhalt in „root“ Verzeichnis zu entfernen:

 
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]

Andere Tipps

Fügen Sie diese Datei unter dem Basispfad .htacces (dh /../ 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]

Und lassen Sie die .htaccess, die unter dem publc Verzeichnis war, wo es war.

Sie werden also 2 .htaccess-Dateien haben, eine unter dem öffentlichen Verzeichnis (das gewöhnliche von Zend Framework-Dokumentation) und zweite unter dem Basispfad (die, die ich oben geschrieben).

Sie sollten Ihr Projekt öffentliche Ordner www-Ordner in dem Host platzieren, so dass Ihre Adresse wird yourdomain.com/ werden. Ihr Quellcode Ordner wie Bibliothek, Anwendungen ... sollte auf gleicher Höhe mit www-Ordner, nicht in ihr. Diese Methode wird die Sicherheit Ihrer Website

Förderung

Es ist in der Tat nicht die beste idead Zend Framework-Anwendungen auf einem Shared-Hosting laufen. Ich würde wirklich empfehlen, ein virtuelles privates Hosting (VPS) zu bekommen. Es gibt sehr gute und preiswerte Hostings gibt mit Zend Framework und anderen Frameworks bereits installiert und regelmäßig aktualisiert. Ich bin auf servergrove und es ist großartig so weit!

Aber das bedeutet nicht, dass Sie es nicht funktionieren auf einem Shared Hosting machen können. Sie müssen nur etwas mit .htacess arbeiten. Setzen Sie den Inhalt des öffentlichen Ordners in Ihr Webroot und passen Sie Ihre Pfade in der bootstrap.php, stellen Sie sicher, dass alle andere Ordner nicht greift direkt auf und verwenden Sie alles über Ihre index.php von Routing den üblichen ZF Ansatz sein können.

Die Antwort von ArneRie nicht für mich arbeiten und ich landete schließlich auf mit Lorenzo Albertsons Lösung . Hoffe, das andere hilft eine schnellere Lösung zu erhalten.

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]

Eigentlich eine Menge Antworten (die meisten von ihnen hier auf SO) Ich habe für sie gesucht und gefunden, aber keiner von ihnen arbeitete für mich. So fand ich endlich eine Lösung - .htaccess auf root dir:

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

Dieses von http://framework.zend.com / wiki / Anzeige / ZFDEV / Konfiguration + Ihre + URL + Rewriter und index.php auf root dir:

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

Dieses von http://akrabat.com/ zend-framework / zend-framework-on-a-Shared-Host / Und es funktioniert für mich, auch wenn es andere Projektverzeichnis in Stammordner - wie Forum oder so. Dachte, es könnte jemand nützlich sein:)

Auch Rob Allen schrieb eine gute Lösung

Ich bin mit Zend Framework 2 und es funktioniert für mich. Alghough ich nicht Teil "Referenzierung Öffentlichkeit gegenüber Dateien" von oben Link getan haben.

Ich habe gerade geänderten Code in meinem layout.phtml aus:

$basePath = $this->basePath();

zu:

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

Ich habe in der gleichen Situation gewesen und haben die zend Bibliotheken unter einem Ordner unter öffentlichen wie ‚src‘ setzen - und verwenden Sie eine .htaccess von Deny All. Sie werden ein paar Pfade jonglieren müssen, aber es funktioniert gut.

. . . Wie Magento verwendet Zend Framework ??? Ich verwende XAMPP und ich habe Magento installieren lokal ohne php.ini zu ändern, http.conf noch virtuelle Hosts.

stieß ich auf dieses Problem vor kurzem und durch diesen Thread konnte ich eine Lösung finden. Ich bin mit ZF2. Also alles, was ich tun musste, war die zend zugehörigen Dateien in einem Verzeichnis haben wir nennen src sagen kann. Dieses Verzeichnis wird in der Öffentlichkeit oder Root-Verzeichnis befindet (wie /www)

  1. Erstellen Sie eine .htaccess-Datei im 'src' dir und fügen Sie die von All-Richtlinie verweigern.

  2. In der Indexdatei, ändern Sie das Arbeitsverzeichnis in dem src Ordner durch den folgenden Aktionen ausführen:

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

... und Sie sind gut zu gehen!

den virtuellen Host einrichten wird in der Regel innerhalb von httpd.conf oder extra / httpd-vhosts.conf getan. Wenn Sie httpd-vhosts.conf verwenden, stellen Sie sicher, dass diese Datei von Ihrer httpd.conf-Datei enthalten ist. Einige Linux-Distributionen (zB: Ubuntu) Paket Apache, damit Konfigurationsdateien gespeichert werden in / etc / apache2 und erstellen eine Datei pro virtuellen Host innerhalb Ordner / etc / apache2 / sites-enabled. In diesem Fall würden legen Sie den virtuellen Host-Block unten in die Datei / etc / apache2 / sites-enabled / ZF2-Tutorial.

Sicherstellen, dass Namevirtualhost definiert wird, und auf „*: 80“ oder ähnlich, und dann einen virtuellen Host entlang dieser Linien definieren:

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.

Stellen Sie sicher, dass Sie aktualisieren Sie Ihre / etc / hosts oder C:. \ Windows \ system32 \ drivers \ etc \ hosts-Datei, so dass ZF2-tutorial.localhost auf 127.0.0.1 zugeordnet ist

Ich schlage vor, die simpliest: Entwickeln Sie Ihre Anwendungen in einer Weise, wo index.php in Ihrer Wurzel ist (noch besser - immer definieren PUBLIC_PATH - dirname(__FILE__); in index.php und Links zu dieser konstanten relativen machen). Zusammen mit den Anwendungs- und Bibliotheksordnern. Sie können sie leicht unaccessible machen von außen deny from all in .htaccess verwenden.

Die PUBLIC_PATH Konstante hilft auch, wenn die Öffentlichkeit nicht öffentlich ist. (Public html oder / public html / www (in meinem Fall))

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top