Zend Framework Tutorial Teil 2:
Systemaufbau und Erstellung des ersten Projekts
ACHTUNG:
Dieses Tutorial wird nicht mehr weitergeführt, da es auf ältere Versionen des Zend Frameworks aufbaut. Das neue Projekt ist hier:
Zend Framework Tutorial - Wir bauen ein Content Management System (CMS)
Im ersten Teil dieses Tutorials habe ich in einer Einführung den Aufbau dieses Tutorials erläutert und einen Überblick über die in diesem Tutorial verwendeten Zend Framework Komponenten gegeben. Zudem habe ich die Anforderungen an das TravelloBlog, unserer Beispiel-Anwendung, zusammengefasst. Wenn du den ersten Teil noch nicht gelesen hast, hole dies bitte schnell nach.
In diesem zweiten Teil gibt es zunächst etwas Theorie, danach erläutere ich den grundlegenden Systemaufbau für unser TravelloBlog Projekt. Wir werden unsere Verzeichnisstruktur aufbauen und ein erstes "Hallo Welt!" erstellen.
Wenn du über neue Tutorial Teile informiert werden möchtest, abonniere am besten den Feed dieses Blogs. Dann verpasst du garantiert keinen Teil des Tutorials. Es gibt auch Übersicht mit den bisher erschienen Teilen des Tutorials.
Wichtig: Dieses Tutorial setzt die Zend Framework Version von mindestens 1.8.0 voraus und wird bei der Verwendung einer älteren Version unter Umständen nicht zu 100% funktionieren (.z.B. Bootstrapping).
Inhaltsverzeichnis
- Verzeichnisstruktur
- Zend_Tool_Project
- Anlegen eines Projektes unter XAMPP
- Anlegen eines Projektes unter Zend Server
- Unser erstes Projekt
- .htaccess
- Einen VirtualHost einrichten
- Willkommen beim ZF
- Download
- Zusammenfassung
- Changelog
- Navigation
- Kommentare
Verzeichnisstruktur
Im Zend Framework Manual gibt es einen guten Vorschlag für eine Verzeichnisstruktur.
Du kannst du jetzt natürlich alle Verzeichnisse und Dateien manuell anlegen und abtippen - das ist arbeitsintensiv. Die gute Nachricht ist, dass seit der Version 1.8 des Zend Frameworks ein Tool hinzugekommen ist, das dir diese Arbeit abnimmt: Zend_Tool_Project.
Zend_Tool_Project
Mit Zend_Tool steht, wie bereits erwähnt, ein sehr hilfreiches Hilfsmittel zur Verfügung. Mit Zend_Tool_Project kann schnell und unproblematisch ein neues Projekt mit einer standardisierten Verzeichnisstruktur und Standarddateien angelegt. Zusätzlich kam auch noch Zend_Tool_Framework hinzu. Mit diesem Tool kann man bei einem bestehenden Projekt z.B. Controller, Module usw. im Standardformat anlegen.
Zunächst einmal brauchen wir jedoch Zend_Tool_Project.
Ich zeige hier mal die Vorgehensweise auf bei Verwendung von XAMPP und Zend Server. Wenn du auf einer anderen Umgebung arbeitest, sollte es sinngemäß funktionieren.
Anlegen eines Projektes unter XAMPP
Bei allen Pfadangaben gehe ich von der Standard Installation aus. Wenn du XAMPP in einem anderen Pfad installert hast, musst du natürlich die Pfadangaben entsprechend ändern!
Die Anwendung ist denkbar einfach. Der einzige Stolperstein ist, dass der Pfad zu den Zend Libraries gesetzt werden muss. So funktioniert es auf meinem lokalen Rechner:
Zunächst einmal muss die Zend Library irgendwo auf deiner Platte sein. Sinnvoller Weise ist das in dem Verzeichnis, wo auch deine anderen Webapplikationen liegen. Bei mir ist das "c:\xampp\htdocs". Wahrscheinlich hast du dir das komplette Zend Framework geholt. Dann entpacke es in das Verzeichnis "c:\xampp\htdocs" (oder wo immer es bei dir sein mag). Du hast dann das Framework liegen unter: "c:\xampp\htdocs\ZendFramework-1.8.4" (bzw. einer anderen Versionsnummer als der 1.8.4). Wenn du mal in das Zendverzeichnis reingehst, dann siehst du dort (unter Anderem) ein Verzeichnis "/library" und darin "/Zend". Dort sind dann alle die Library Klassen des Zend Frameworks untergebracht.
Ok, die Zend Library liegt also unter "c:\xampp\htdocs\ZendFramework-1.8.4\library". Damit ist dieser Pfad klar.
Im Zend Framework Verzeichnis liegt ebenfalls das Verzeichnis "bin". Dort findest du drei Dateien: zf.bat, zf.php und zf.sh. Kopiere diese Dateien in das Verzeichnis, in dem bei dir das PHP liegt. Bei mir ist das "c:\xampp\php". Nun musst du auf die Commandebene wechseln - unter Windows ist das Start->Ausführen->cmd - und in dein PHP Verzeichnis gehen (cd c:\xampp\php).
Bevor wir nun unser Projekt mit der Default-Struktur des Frameworks anlegen können, müssen wir noch den Pfad zur Zend Library setzen. Gebe dazu auf der Commandline ein:
set zend_tool_include_path=c:\xampp\htdocs\zendframework-1.8.4\library
Damit ist der Pfad gesetzt. Wenn die Library bei dir woanders liegt, musst du natürlich deinen Pfad eingeben.
Und wenn du schon beim eingeben des Pfades bist, dann setze auch gleich den Pfad zum PHP-Verzeichnis (wo ja deine zf.* Dateien drinliegen). Dann brauchst du später zf nicht mehr mit Angabe des Pfades aufzurufen.
Unter Windows setzt man den Pfad wie folgt:
Start->Einstellungen->Systemsteuerung->System->Erweitert->Umgebungsvariablen
Und dort den Pfad zum PHP-Verzeichnis eintragen.
Jetzt können wir unser erstes Projekt erstellen. Dazu gebe bitte ein:
zf create project c:\xampp\htdocs\travelloblog
Es erscheint eine Meldung
Creating project at C:\xampp\htdocs\travelloblog
und nach einem kurzen Moment ist das Projekt angelegt.
Sollte das Projekt nicht angelegt worden sein, bzw. werden können, bekommst du eine Fehlermeldung. Das ist immer dann der Fall, wenn php.exe nicht gefunden wird bzw. der Pfad zur Library falsch ist.
Ersteres können wir fast ausschließen, da die zf.xxx Dateien ja im php-Verzeichnis liegen, also liegt es dann normalerweise am falschen Pfad zur Library. Bei der Fehlermeldung wird der gesetzte Pfad angezeigt, damit kannst du schon mal kontrollieren, ob dieser stimmt. Sollte es - warum auch immer - Probleme beim Setzen des Pfades per DOS-Befehl SET geben (siehe oben), kannst du den Pfad auch in der php.ini fest eintragen.
Öffne dazu die php.ini (ist im php-Verzeichnis) und suche dort nach folgendem Eintrag:
;;;;;;;;;;;;;;;;;;;;;;;;; ; Paths and Directories ; ;;;;;;;;;;;;;;;;;;;;;;;;; ; UNIX: \"/path1:/path2\" ;include_path = \".:/php/includes\" ; ; Windows: \"\path1;\path2\" ;include_path = \".;c:\php\includes\"
Trage dort den Pfad zur Library ein. Dazu aktivierst du das include_path indem du das Semikolen (also den Strichpunkt) am Zeilenanfang entfernst und den Pfad zur Library einträgst. Mehrere Pfade hintereinander werden durch Semikolon getrennt.
Das Ganze könnte dann so aussehen (so ist es zumindest bei mir):
;;;;;;;;;;;;;;;;;;;;;;;;; ; Paths and Directories ; ;;;;;;;;;;;;;;;;;;;;;;;;; ; UNIX: \"/path1:/path2\" ;include_path = \".:/php/includes\" ; ; Windows: \"\path1;\path2\" include_path = \".;c:\xampp\htdocs\library\;c:\xampp\htdocs\zend_1.8.4\library\\"
Anlegen eines Projektes unter Zend Server
Bei allen Pfadangaben gehe ich von der Standard Installation aus. Wenn du Zend Server in einem anderen Pfad installert hast, musst du natürlich die Pfadangaben entsprechend ändern!
Die Anwendung ist denkbar einfach. Der einzige Stolperstein ist, dass der Pfad zu den Zend Libraries gesetzt werden muss. So funktioniert es auf meinem lokalen Rechner:
Zunächst einmal muss die Zend Library irgendwo auf deiner Platte sein. Diese liegt bei Zend Server unter
"c:\Programme\Zend\ZendServer\share\ZendFramework\library". Wenn du mal in das Zendverzeichnis reingehst, dann siehst du dort (unter Anderem) ein Verzeichnis "/library" und darin "/Zend". Dort sind dann alle die Library Klassen des Zend Frameworks untergebracht.
Ok, die Zend Library liegt also unter "c:\Programme\Zend\ZendServer\share\ZendFramework\library". Damit ist dieser Pfad klar.
Im ZendFramework Verzeichnis liegt ebenfalls das Verzeichnis "bin". Dort findest du drei Dateien: zf.bat, zf.php und zf.sh. Kopiere diese Dateien in das Verzeichnis, in dem die php.exe liegt. Das ist in "c:\Programme\Zend\ZendServer\bin". Nun musst du auf die Commandebene wechseln - unter Windows geht das mit: Start->Ausführen->cmd - und in dein PHP Verzeichnis gehen (cd c:\programme\zend\zendserver\bin).
Bevor wir nun unser Projekt mit der Default-Struktur des Frameworks anlegen können, müssen wir noch den Pfad zur Zend Library setzen. Gebe dazu auf der Commandline ein:
set zend_tool_include_path=c:\programme\zend\zendserver\share\zendframework\library
Damit ist der Pfad gesetzt. Wenn die Library bei dir woanders liegt, musst du natürlich deinen Pfad eingeben.
Und wenn du schon beim eingeben des Pfades bist, dann setze auch gleich den Pfad zum PHP-Verzeichnis (wo ja deine zf.* Dateien drinliegen). Dann brauchst du später zf nicht mehr mit Angabe des Pfades aufzurufen.
Unter Windows setzt man den Pfad wie folgt:
Start->Einstellungen->Systemsteuerung->System->Erweitert->Umgebungsvariablen
Und dort den Pfad zum PHP-Verzeichnis eintragen.
Jetzt brauchen wir den Pfad, wo du deine Webseiten speicherst. Standardmäßig ist das bei Zend Server in "c:\Programme\Zend\Apache2\htdocs".
Jetzt können wir unser erstes Projekt erstellen. Dazu gebe bitte ein:
zf create project c:\programme\zend\apache2\htdocs\travelloblog
Es erscheint eine Meldung
Creating project at C:\programme\zend\apache2\htdocs\travelloblog
und nach einem kurzen Moment ist das Projekt angelegt.
Sollte das Projekt nicht angelegt worden sein, bzw. werden können, bekommst du eine Fehlermeldung. Das ist immer dann der Fall, wenn php.exe nicht gefunden wird bzw. der Pfad zur Library falsch ist.
Ersteres können wir fast ausschließen, da die zf.xxx Dateien ja im php-Verzeichnis liegen, also liegt es dann normalerweise am falschen Pfad zur Library. Bei der Fehlermeldung wird der gesetzte Pfad angezeigt, damit kannst du schon mal kontrollieren, ob dieser stimmt. Sollte es - warum auch immer - Probleme beim Setzen des Pfades per DOS-Befehl SET geben (siehe oben), kannst du den Pfad auch in der php.ini fest eintragen.
Öffne dazu die php.ini (im Verzeichnis "c:\Programme\Zend\ZendServer\etc") und suche dort nach folgendem Eintrag:
;;;;;;;;;;;;;;;;;;;;;;;;; ; Paths and Directories ; ;;;;;;;;;;;;;;;;;;;;;;;;; ; UNIX: \"/path1:/path2\" ;include_path = \".:/php/includes\" ; ; Windows: \"\path1;\path2\" ;include_path = \".;c:\php\includes\"
Trage dort den Pfad zur Library ein. Dazu aktivierst du das include_path indem du das Semikolen (also den Strichpunkt) am Zeilenanfang entfernst und den Pfad zur Library einträgst. Mehrere Pfade hintereinander werden durch Semikolon getrennt.
Das Ganze könnte dann so aussehen (so ist es zumindest bei mir):
;;;;;;;;;;;;;;;;;;;;;;;;; ; Paths and Directories ; ;;;;;;;;;;;;;;;;;;;;;;;;; ; UNIX: \"/path1:/path2\" ;include_path = \".:/php/includes\" ; ; Windows: \"\path1;\path2\" include_path = \".;c:\programme\zend\zendserver\share\zendframework\library\\"
Unser erstes Projekt
So, nachdem wir das Projekt erfolgreich angelegt haben, schauen wir uns das auch mal an.
Wenn du in das Verzeichnis "travelloblog" gehst, sollte es so ausschauen:
/travelloblog
/application
/configs
application.ini
/controllers
ErrorController.php
IndexController.php
/models
/views
/helpers
/scripts
/error
error.phtml
/index
index.phtml
Bootstrap.php
/library
/public
.htaccess
index.php
.zfproject.xml
Das Verzeichnis "/travelloblog/application" beinhaltet alle Dateien für die Konfiguration sowie unsere Model-View-Controller Dateien (mehr dazu im nächsten Teil des Tutorials).
In das "/travelloblog/library" Verzeichnis kommen alle Bibliotheken, die wir für unser TravelloBlog benötigen. Kopiere das komplette Verzeichnis "Zend" mit allen Dateien und Unterverzeichnisse aus dem Verzeichnis "ZendFramework-1.8.4/library/" in dein Projektverzeichnis "/travelloblog/library".
Dass wir die Zend-Bibliotheken im Unterverzeichnis Zend anlegen hat den Vorteil, dass wir später auch andere Bibliotheken (Smarty, eZ components usw.) dort ablegen können.
Alle Dateien, die über den Webserver erreichbar sein sollen, kommen in das Verzeichnis "/travelloblog/public". Dies wären unsere index Datei sowie alle Grafiken, CSS und Java Script Dateien.
Dafür habe ich das Verzeichnis "public" noch ein wenig erweitert, damit es später übersichtlich wird.
Das Verzeichnis "_files" in "/travelloblog/public/" beginnt übrigens mit einem Unterstrich, damit wir später beim Routing keine Probleme bekommen, falls wir mal einen Controller mit Namen "FilesController" verwenden möchten. Zu den Controllern kommen wir jedoch erst in einem späteren Teil dieses Tutorials.
Erstelle bitte noch die restlichen Verzeichnisse, damit dann dein fertiges /public-Verzeichnis wie folgt aussieht:
/travelloblog
[...]
/public
/_files
/css
/images
/js
.htaccess
index.php
Wer noch ein wenig über das Zend_Tool nachlesen möchte, es gibt in der Zend DevZone einen Kommentar direkt vom Entwickler Ralph Schindler darüber zu dessen Einführung:
Zend_Tool and ZF 1.8
.htaccess
Mit Hilfe der .htaccess Dateien, die der Apache Webserver aus jedem Verzeichnis lesen kann, können wir bestimmte Regeln festlegen, inwieweit ein Verzeichnis gelesen werden kann.
Damit niemand auf die Dateien in den Verzeichnissen "/travelloblog/application" und "/travelloblog/library" zugreifen kann, lege dort jeweils eine .htaccess Datei mit folgendem Inhalt an:
deny from all
Hierdurch stellen wir sicher, dass kein Besucher über den Webserver direkt auf diese Verzeichnisse zugreifen kann.
Im Verzeichnis "/travelloblog/public" wurde bereits durch Zend_Tool_Project eine .htaccess Datei mit folgendem Inhalt angelegt:
-
SetEnv APPLICATION_ENV development
-
-
RewriteEngine On
-
RewriteCond %{REQUEST_FILENAME} -s [OR]
-
RewriteCond %{REQUEST_FILENAME} -l [OR]
-
RewriteCond %{REQUEST_FILENAME} -d
-
RewriteRule ^.*$ - [NC,L]
-
RewriteRule ^.*$ index.php [NC,L]
Hierbei wird geprüft, ob die aufgerufene Datei in der angegebenen URL existiert. Wenn nicht, wird die Anfrage auf die Datei index.php in diesem Verzeichnis umgeleitet.
Wenn du deinem Browser die Adresse "http://localhost/travelloblog/public/" aufrufst, wird deine Applikation aufgerufen. Du kannst auch beliebige andere Adressen ausprobieren, wie z.B. "http://localhost/travelloblog/public/geht/das" oder "http://localhost/travelloblog/public/script.php?foo=bar". Jedes Mal wird deine Applikation aufgerufen.
Wichtig:
Damit das Rewrite (die Umleitung) auch funktioniert, muss es beim Apache aktiviert sein. Dazu musst du die Konfigurationsdatei des Apachen öffnen. Die liegt bei XAMPP unter "c:/xampp/apache/conf/" und heisst httpd.conf. Bei Zend Server ist die httpd.conf unter "c:\Programme\Zend\Apache2\conf" zu finden. Wenn du die Datei geöffnet hast, findest du ziemlich am Anfang eine ganze Menge Einträge, die mit LoadModule beginnen. Suche dort nach der Zeile LoadModule rewrite_module modules/mod_rewrite.so. Wenn am Anfang der Zeile ein '#' steht, dann ist dieses Module deaktiviert. Lösche in dem Fall das # und damit haben wir das Rewrite Modul freigeschaltet.
Weiter unten findest du bei XAMPP den Eintrag:
Du musst jetzt den Apachen noch neu starten, damit die Änderungen auch aktiviert werden.
Wer sich näher mit dem Rewrite beschäftigen möchte, kann sich diese beiden Seiten durchlesen:
Apache Module mod_rewrite
URL Rewriting Guide
Einen VirtualHost einrichten
Wenn du statt der etwas unhandlichen Adresse "http://localhost/travelloblog/public/" lieber eine kürzere Adresse wie z.B. "http://travelloblog/" hättest, kannst du dir auch einen entsprechenden VirtualHost einrichten. Dazu musst du Zugriff auf die dafür notwendige Konfigurationsdatei von Apache haben. Die heißt (bei mir) "httpd-vhosts.conf" und liegt bei XAMPP unter "c:/xampp/apache/conf/extra" und bei Zend Server unter "c:\Programme\Zend\Apache2\conf\extra".
Öffne die Datei und suche nach der folgenden Passage - ggf. musst du das Kommentarzeichen '#' entfernen:
NameVirtualHost *:80
Am Ende musst du dann noch folgendes einfügen:
ServerName travelloblog DocumentRoot C:/xampp/htdocs/travelloblog/public/ ErrorLog logs/travelloblog-error_log CustomLog logs/travelloblog-access_log common
Bei Zend Server wäre der DocumentRoot: "DocumentRoot c:/Programme\Zend\Apache2/htdocs/travelloblog/public/".
Wichtig:
Damit die Datei "httpd-vhosts.conf" auch verarbeitet wird, darf sie (in der httpd.conf) nicht deaktiviert sein.
Öffne bitte nochmals die Datei "httpd.conf" und ziemlich am Ende findest du den Eintrag:
# Virtual hosts Include conf/extra/httpd-vhosts.conf
Sollte vor dem Include ein # sein, dann lösche es. Damit ist die Einbindung der Datei "httpd-vhosts.conf" aktiviert.
Jetzt musst du den Apache nochmals neu starten, damit alle Änderungen auch wirksam werden.
Noch eine Zusatzinfo für Windows-Benutzer:
Diese Info hat Simon in den Kommentaren reingeschrieben (danke für die Info). Anscheinend kann es notwendig sein, dass in der Datei:
"C:\WINDOWS\system32\drivers\etc\hosts"
der Eintrag
127.0.0.1 travelloblog
hinzugefügt werden muss, damit es klappt.
Ist bei mir zwar nicht notwendig, aber probiert es aus, falls ihr Probleme haben solltet.
Willkommen beim ZF
Ruf jetzt einfach mal in deinem Browser die Adresse "http://localhost/travelloblog/public/" auf.
Herzlich Glückwunsch! Wenn du alles so gemacht hast wie oben beschrieben siehst du jetzt die erste Ausgabe auf deinem Monitor.
Kann es noch einfacher gehen?
Allerdings ändern wir den Aufbau noch ein klein wenig:
gehe in das Verzeichnis "/travelloblog/public/" und kopiere die Datei index.php in das Verzeichnis "/travelloblog/application/".
Jetzt öffne bitte die Datei /travelloblog/public/index.php, lösche den kompletten Inhalt und schreibe statt dessen rein:
-
<?php
-
-
require '../application/run_app.php';
Dann gehe in das Verzeichnis "/travelloblog/application/" und benenne die Datei index.php um in run_app.php.
Wenn du jetzt über deinen Browser "http://localhost/travelloblog/public/" aufrufst, wirst du wieder den gleichen Willkommensgruß auf deinen Monitor sehen. Wozu also der ganze Zauber?
Unser öffentliches Verzeichnis ist "/public/". Die anderen Verzeichnisse ("/library/", "/application/" usw.) und deren Unterverzeichnisse sind von außen nicht einsehbar.
Deshalb ist die index.php über den Webserver für jeden erreichbar. Ich möchte vermeiden, dass bei einer Verkettung unglücklicher Ereignisse jemand Informationen über meine Verzeichnisstruktur heraus finden kann. Man hat ja schon Pferde vor der Apotheke... - du weißt, was ich meine. Man erfährt immer mal wieder von Geschichten, bei denen ein Server plötzlich alle PHP Dateien im Klartext angezeigt hat. Das Einzige, was man jetzt sehen würde ist die Verlinkung auf die Datei, die die Applikation startet (run_app.php) und die liegt in einem Bereich, auf den man von außen nicht zugreifen kann.
Download
Der aktuelle Stand des Tutorials nach diesem zweiten Teil kann auch herunter geladen werden.
So lange das Tutorial noch nicht komplett auf die Version ab 1.8 umgeschrieben ist, werden die Sourcen für beide Versionen angeboten:
- Source Zend Framework Tutorial - Teil 2 - ZF ab v1.8
- Source Zend Framework Tutorial - Teil 2 - ZF bis v1.7.8
Die Zip Datei enthält nicht die Bibliotheken (libraries) der aktuellen Version des Zend Frameworks. Die musst du bitte selber in das entsprechende Verzeichnis kopieren.
Zusammenfassung
In diesem zweiten Teil meines Zend Framework Tutorials habe ich den grundlegenden Systemaufbau und die Verzeichnisstruktur erläutert. Wir haben über Zend_Tool unser erstes Projekt angelegt, diverse .htaccess Dateien angelegt noch kurz erläutert, wie du für das Projekt einen eigenen VirtualHost einrichten kannst. Jetzt haben wir die Voraussetzungen geschaffen, um unser Projekt nach und nach mit Leben und Funktionalitäten zu füllen.
Im nächsten Teil dieses Tutorials führe ich dich dann in das Model-View-Controller Konzept ein und wir werden auf Basis der Anforderungen aus dem ersten Teil unsere Controller Klassen erstellen. Dabei lernen wir unter anderem auch die Zend_Controller Komponente kennen.
Fragen, Probleme und Anregungen bitte nicht per E-Mail senden, sondern hier in die Kommentare stellen. Dann haben alle etwas davon.
Changelog
- 26.09.2009 - Anpassung an Zend Framework Version ab 1.8
- 26.09.2009 - Projekterstellung unter Zend Server hinzugefügt
Navigation
- Zend Framework Tutorial Übersicht
- Zurück zu Teil 1: Einführung und Anforderungen
- Weiter zu Teil 3: MVC Design Pattern und Zend_Controller

Sonntag, 25. Januar 2009 12:37
SUPER!!
Endlich eine Installations-Einführung, die auch auf Anhieb funktioniert.
Dankeschön.
Ich will schon seit langem mit ZF-Projekte beginnen kam aber über die Installationshürden nicht hinaus.
Jetzt werde ich loslegen.
Dieter
Sonntag, 25. Januar 2009 22:28
Zum Aktivieren des Moduls mod_rewrite muss der apache dann noch einmal neugestartet werden, damit das Modul akiviert wird.
Montag, 26. Januar 2009 0:48
Danke für den Hinweis, jhb, ich hab’s im Text ergänzt.
Dienstag, 17. Februar 2009 21:02
Hi,
vielen dank für dieses aktualisierte Tutorial! ich habe es jetzt tatsächlich geschafft, das Zend Framework einzubinden. Mit diesen Include Path ist das ja nicht ganz so einfach, zumindest für mich
Die meisten anderen Tutorials sind ja schon etwas veraltet, daher ist das hier echt super! ich werde gespannt weiterlesen
mfg, Mario
Mittwoch, 10. Juni 2009 10:32
Moin,
ich arbeite gerade dieses Tutorial durch und hab mir gedacht ich schreib einfach mal rein, was ich im noch nicht auf Version 1.8.2 aktualisierten Teil gemacht habe.
Im Moment ist bis “Bootstrap Datei” aktualisiert.
Nun, alles was man jetzt noch tun muss/kann ist den Virtual Host einrichten. Bei der Bootstrap-Datei ist dagegen nichts weiter zu tun: Die wurde mit dem Projekt durch Zend_Tool automatisch erstellt. Und die automatisch generierte index.php setzt schon den Include-Path. Die Variable $frontController brauchen wir ja noch nicht, deshalb hab ich auch die noch nicht gesetzt. Damit das Programm aber Klassen automatisch lädt, habe ich meine Bootstrap-Datei um folgende Prozedur erweitert:
===== Beginn =====
”,
‘basePath’ => APPLICATION_PATH));
return $moduleLoader;
}
}
===== Ende =====
Mehr dann als Kommentar im nächsten Teil.
Mittwoch, 10. Juni 2009 10:35
Mist, da wird leider nicht das anbgezeigt, was ich als Funktion angegeben hab. Deshalb mal anders:
Die Funktion die ich eingebaut habe hab ich aus dem Tutorial http://akrabat.com/wp-content/uploads/getting-started-with-zend-framework-162.pdf übernommen. Dort findet man sie auf S. 5 oben.
Donnerstag, 11. Juni 2009 12:57
Hallo,
hab das Tutorial auf meinem heimrechner ausprobiert hat auch alles super geklappt. Nun hab ich den Ordner so wie er ist auf nen webserver geladen und kriege bei aufrufen einzelner links 404 Website not found. Die htaccess ist unverändert auf dem server selbst ist mod_rwrite aktiviert und es scheint zu funktionieren.
Wenn ich in meine Seite
http://fbworacle/~fluegel/sommer/public/index.php/addresse eingebe bekomme ich keinen Fehler mehr.
Inwieweit muss ich hier noch wo Änderungen vornehmen, das internet gibt nicht soviel her, bzw. zuviel.
Freitag, 12. Juni 2009 12:56
Ein super Tutorial.
Ich bin schwer begeistert.
Danke für deine Mühe.
Gruß Christian
Freitag, 10. Juli 2009 15:13
Hallo,
endlich hat sich einer die Mühe gemacht, dass ZendFramework auch mal für Anfänger begreiflich zu machen. Alles was sonst noch im Netz rumgeistert ist für besonders für Anfänger an vielen Stellen nicht nachvollziebar und führt zu Frust ohne Ende.
Danke an dieser Stelle für das aktuelle Tutorial.
Gruss
Andreas
Mittwoch, 22. Juli 2009 20:06
Habe noch eine Zusatzinfo zum einrichten der VirtualHosts unter Windows:
ich musste noch die Datei C:\WINDOWS\system32\drivers\etc\hosts ändern und einen Eintrag
127.0.0.1 travelloblog
hinzufügen. Dann klappte es erst.
Freitag, 28. August 2009 10:45
Hey,
vielen Dank auch von mir. Endlich wird ZendFramework verständlich erklärt (auch das Einrichten). Bin schon auf die nächsten Teile gespannt.
Gruß Marika
Dienstag, 8. September 2009 17:44
Ich entwickele ebenfalls unter Windows (XP) mit XAMPP. Ich habe einen Virtual Host defniert und oben erwähnten Eintrag in der hosts-Datei gemacht.
Es gab aber noch ein Problem mit den Rewrite-Regeln. Dieses habe ich gelöst, indem ich eine RewriteBase definiert habe, und in der Regel, die alles restliche auf index.php umleitet, ein Slash vor das “index.php” gesetzt habe.
Wenn mein Zend-Projekt beispielsweise in “c:\xampp\htdocs\MyZend\public” liegt, so sieht der Inhalt der .htaccess-Datei nachher so aus:
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteBase /MyZend/public/
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ – [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
Danach hat es bei mir funktioniert.
Ich hoffe, das hilft einigen, die vielleicht ein ähnliches Problem haben.
Samstag, 3. Oktober 2009 18:04
Dieses Tutorial ist supper!
aber…
Ald ich ein virtualhost erstellrn wollte habe ich festgestellt, dass in der Datei httpd_vhost.conf kein Eintrag mit name NameVirtualHost *:80. Nur mit VirtualHost *:80 (Das heist ohne Prefix “Name”. Nun bin ich sehr vervirrt und ich muss anderswo eine Hilfe suchen! oder habe ich etwas falsch gemacht?
Hat jemand eine Idee?
Sonntag, 4. Oktober 2009 23:16
hmmm, bist du sicher, dass bei dir dieser Eintrag nicht existiert?. Bei mir ist er sowohl bei XAMPP wie auch bei Zend Server vorhanden. Steht ziemlich weit oben.
Ansonsten schreib’s halt rein
Dienstag, 6. Oktober 2009 12:15
Es ist der Wurm drin!
Ich habe alles kontrolliert und nachgeschaut! und mein PC x-mal rebootet (wenn ich apache stoppe, dann kann er nicht mehr starten!).
Es funktioniert nicht und ich bin ziemlich frustriert!
Liegt es an meiner Version 1.9.3PL1 oder am Windows XP? Ich weiss es nicht. Vielleicht muss ich alles neu installieren und neu beginnen
Uwe: Danke für Deine Hilfe!
Dienstag, 6. Oktober 2009 12:44
Nun habe ich einen Teilerfolg!
der virtual host scheint zu laufen! Es ist tatsächlich so, das der Eintrag NameVirtualHost *:80 in meiner Version 1.9.3PL1 nicht mehr als Beispiel existiert. Ich habe
den Beispiel-Eintrag VirtualHost *:80 stattdessen angepasst. Und dieser Eintrag muss nach den XML-Kunstregel abgeschlossen sein (hatte ich nicht gesehen).
Nun habe ich einen weiteren Fehler “invalid controller”. Das hat nicht mit virtual host zu tun. Wahscheinlich ist mir ein Fehler bei der Bug-Suche unterlaufen. Ich muss weiter suchen.
Werde weiterhin berichten…
Dienstag, 6. Oktober 2009 13:08
Ich verwende Version 1.9.2 Daher kann ich nur dazu was sagen.
Grundsätzlich:
Wenn der Apache nicht freillig wieder startet (entweder durch den Start/Stop/Restart Schalter in Programme oder bei den Diensten in der Windows Verwaltung), dann hätte ich die starke Vermutung, dass da was nicht stimmt – entweder an der Installation oder an den Config Dateien. Ich tippe auf versaute httpd.conf.
Weiterhin:
Die Einträge in den httpd Dateien haben nichts mit der ZF Version zu tun, sondern mit dem Apachen.
Invalid Controller:
Hast du (siehe Tutorial Text oben) mod_rewrite aktiviert und AllowOverride auf All gesetzt?
Samstag, 24. Oktober 2009 14:40
Nur mal zur Info, bei mir (Win 7 mit Xampp) hat die ZF.bat die Zend LIbrary direkt unter php/pear eingebunden und verknüpft, dadurch entfällt das verweisen in der php.ini bei mir.
Montag, 11. Januar 2010 23:24
Vielen Dank an den Autor für dieses Tutorial. Sehr hilfreich und wie schon von anderen erwähnt – es funktioniert sofort!
Übrigens habe ich V 1.9.6 des Zend Frameworks installiert.
Einen kleinen Kritikpunkt hätte ich jedoch bezüglich “AllowOverride All”. In meiner httpd.conf-Datei gibt es 3 Einträge dazu. Welchen genau meinst du in deiner Anleitung?
Dienstag, 2. März 2010 14:26
Erst einmal vielen Dank für dieses Tutorial.
Leider habe ich das Problem das die rewriting nicht funktioniert.Ich habe einen vhost eingerichtet und kann ihn auch normal aufrufen.Wenn ich ihn mit http://travelloblog/test aufrufe kommt folgende fehlermeldungMessage: Invalid controller specified (test).Die .htaccess von christian funktioniert auch nicht ( request exceeded the limit off internal redirects). Hat noch jemand eine Idee?
Meine configuration Solaris10 php 5.2.6 ZF 1.10.2
Donnerstag, 3. Juni 2010 16:11
Auch von mir ein großes Danke für dieses Tutorial.
Aber auch ich habe das gleiche Problem wie Werner. Das rewriting funktioniert bei mir auch nicht. Bekomme ebenfalls die Fehlermeldung: invalid controller.
Woran kann das liegen?
Mittwoch, 4. August 2010 17:49
Zf-tutorials…
[...] something about zf-tutorials[...]…
Samstag, 28. August 2010 11:15
hi,
tutorial ist gut und verständlich, aber musstest du den zendserver reinbringen? weil ich eigentlich keine 30-Tage version verwenden…
Samstag, 28. August 2010 11:16
ps: bin erst bis zu dem schritt, wo dann zendserver konfiguration beschrieben wird…
Freitag, 1. Oktober 2010 11:25
Ein Tip an alle die Probleme haben den Apache wieder zu Starten, weil irgendetwas falsch gelaufen ist: Versucht ihn über die cmd/eingabeaufforderung zu Starten, dann bekommt ihr wenigstens Auskunft was kaputt ist.
MFG Lars
Donnerstag, 25. November 2010 21:51
Ich bekomme einfach die Umleitung nicht hin.
Benutze W7 und habe im Xampp das Load Module drinnen alles andere auf All gestellt.
Es kommt immer noch der Fehler Message: Invalid controller specified (test).
Ich versteh die Welt nicht mehr.
Auch mit dem Tipp die Base mit einzubauen hat nicht geklappt. Neugestartet hab ich den Xampp auch immer.
Montag, 8. August 2011 16:03
Danke Danke,
super, endlich etwas was schnell funktioniert, und ohne Probleme, echt Herzlichen Dank