Benutzer-Werkzeuge

Webseiten-Werkzeuge


dev:zf

Zend Framework

Onlime Webhosting unterstützt Zend Framework und verwendet es in zahlreichen internen Projekten / Kunden-Sites. Bei der Entwicklung eines mittleren bis grossen Webprojekts auf PHP empfehlen wir Ihnen Zend Framework.

Onlime stellt sämtlichen Kunden auf dem Webserver die stets aktuellste stabile Version von Zend Framework 2 zur Verfügung unter folgendem Pfad:

/var/www/shared/zf2/library

resp. für Zend Framework 1:

/var/www/shared/zend/library

Momentan sind folgende Versionen installiert:

Version Letztes Update Pfad Beschrieb
2.4.9 2016-05-09 /var/www/shared/zf2 Zend Framework 2
1.12.18 2016-04-13 /var/www/shared/zend Zend Framework 1 (legacy)
Dies stellt keine vollständige Dokumentation zur Einrichtung eines Zend Framework Projekts dar. Sie ist für Zend Framework Einsteiger nicht geeignet. Vielmehr soll diese Kurzdoku Ihnen bei bekannten Problemen weiterhelfen. Für eine ausführliche Einführung lesen Sie bitte als erstes das Quickstart Tutorial.

Empfohlene PHP-Version

Zend Framework setzt PHP 5.3 voraus. Sowohl Zend Framework 1 als auch das neue Zend Framework 2 sollten jedoch 100% kompatibel zu PHP 5.4 sein. Zögern Sie also nicht, gleich auf PHP 5.4 umzusteigen!

Bootstrapping

Das empfohlene Bootstrapping (index.php) unter Zend Framework 1.11.x sieht so aus:

<?php
// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
 
// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
 
// Ensure Zend Framework library is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    '/var/www/shared/zend/library',
    get_include_path(),
)));
 
/** Zend_Application */
require_once 'Zend/Application.php';  
 
// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
            ->run();

Die minimale Konfiguration in application/configs/application.ini sieht in etwa so aus:

[production]
;error reporting
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0

;set timezone
    phpSettings.date.timezone = Europe/Zurich

;include path
    includePaths.library = APPLICATION_PATH "/../library"
    includePaths.models = APPLICATION_PATH "/models"

;bootstrap
    bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"

;resources.frontController
    resources.frontController.env = APPLICATION_ENV
    resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

;resources.layout
    resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

;resources.view
    resources.view.encoding = utf-8

;resources misc
    resources.locale.default = de_CH

;resources.db
    resources.db.adapter = Pdo_Mysql
    resources.db.params.host     = localhost
    resources.db.params.username = usr_web33_1
    resources.db.params.password = xxxxxxxx
    resources.db.params.dbname   = usr_web33_1
    resources.db.params.charset  = UTF8
    resources.db.isDefaultTableAdapter = true
 
[staging : production]
 
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
 
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.db.params.password = ********
limits.top10verleih = 365
Weiterführende Dokumentation und Hilfe für den Start mit Zend Framework finden Sie unter:

Demo-Applikation

Onlime bietet Ihnen eine einfache Demo-Applikation „zfskeleton“ an zum Download via Subversion:

# svn co https://svn.onlime.ch/public/zfskeleton/trunk zfskeleton

Sie können den Code auch via Trac durchstöbern: https://trac.onlime.ch/public/browser/zfskeleton/trunk

Der Verzeichnisbaum des Zend Framework Projekts unter Eclipse/PDT sieht dann in etwa so aus:

zfskeleton Projekt

Problem: index.php befindet sich in einem Unterverzeichnis des webroots, in /public. Wir schlagen Ihnen folgende drei Lösungsvarianten für's Deployment vor:

Deployment: Variante 1 (bevorzugt!)

Onlime Webhosting erlaubt Ihnen, via Controlpanel den Webroot sowohl für die Hauptdomain (www) als auch für jede Subdomain abzuändern. Direkt auf der Übersichtsseite können Sie den Webroot der Hauptdomain anpassen:

Wählen Sie nun das gewünschte Unterverzeichnis unter Relativer Webroot. Bei Zend Framework wird dieses üblicherweise „public“ genannt:

Klicken Sie auf „Speichern“. Ihr Webroot zeigt nun direkt auf das public-Verzeichnis innerhalb /public_html/www/:

Natürlich können Sie den Webroot auch für jede Ihrer Subdomains anpassen. Dies geschieht im Controlpanel einfach via Subdomain-Manager, durch Klick auf das „Edit“-Symbol neben der Subdomain.

Deployment: Variante 2

Wir splitten also unser Zend Framework Projekt auf in zwei Teile. Der Inhalt vom public Verzeichnis kopieren wir nach /public_html/www (resp. den entsprechenden webroot Ihrer Subdomain):

/public_html/www/
|-- .htaccess
|-- _files
|-- css
|-- images
`-- index.php
Achten Sie sich darauf, dass Sie sämtliche Dateien kopieren, ebenfalls die versteckten wie .htaccess. Unter Umständen werden diese in Ihrem FTP-client nicht angezeigt.

Den Rest des Projekts kopieren wir nach /includes/zfskeleton:

/includes/zfskeleton/
|-- application
|-- library
`-- tmp

Nun passen wir noch den Pfad zu unserem Applikations-Verzeichnis an in /public_html/www/index.php:

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../../includes/zfskeleton/application'));

Im webroot (/public_html/www) befinden sich also nur die Dateien aus public, der Rest der Applikation ist ausserhalb des webroots „versteckt“.

Deployment: Variante 3

basierend auf:

Dies wäre die einfachere, jedoch etwas unsicherere Variante. Wir belassen alles in Originalform und kopieren das gesamte Zend Framework Projekt nach /public_html/www:

/public_html/www/
|-- .htaccess
|-- application
|-- library
|-- public
`-- tmp

Den Pfad zu unserem Applikations-Verzeichnis in /public_html/www/index.php belassen wir:

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

Damit wir auf unser Projekt nicht extra via /public zugreifen müssen, haben wir in .htaccess folgende Rewrite Rules definiert (Dieses zusätzliche .htaccess ist bereits in unserer Demo-Applikation enthalten):

# .htaccess
# used in shared hosting environments. Don't remove public/.htaccess !

SetEnv APPLICATION_ENV development

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]
Achten Sie sich darauf, dass Sie sowohl .htaccess im Wurzel-Verzeichnis des ZF Projektes mitkopiert haben, als auch die zweite Datei public/.htaccess.

APPLICATION_ENV

Gewisse Anleitungen zum Zend Framework empfehlen Ihnen, APPLICATION_ENV direkt im .htaccess zu setzen:

SetEnv APPLICATION_ENV development

Achtung: Diese Art, eine Umgebungs-Variable (environment variable) zu setzen wird von Onlime Webhosting NICHT unterstützt. SetEnv wird ignoriert.

Als Alternative, ändern Sie bitte den Wert von APPLICATION_ENV direkt in Ihrer index.php:

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));
dev/zf.txt · Zuletzt geändert: 2016/05/09 10:14 von phi