Development

Documentation/de_DE/book/1.0/03-Running-Symfony

You must first sign up to be able to contribute.

Version 6 (modified by Jan.Kunzmann, 10 years ago)
--

ARBEITSENTWURF ROHÜBERSETZUNG / TRANSLATION WORKING DRAFT
Originaldokument: ?, Version ? vom ?
Übersetzungsfortschritt: 100%
Übersetzung: JH
Korrekturfortschritt: 0%

Kapitel 3 - Symfony betreiben

Wie Du bereits in den vorherigen Kapiteln gelernt hast ist das symfony-Framework eine Ansammlung von, in PHP programmierten, Dateien. Ein symfony-Projekt greift auf diese Dateien zu und deshalb bedeutet "installieren" nichts anderes als sich diese Dateien zu besorgen und dem Projekt zugänglich zu machen.

Als PHP5-Framework setzt symfony PHP5 voraus. Um sicherzugehen das Du dies installiert hast öffne eine Kommando-Zeile und führe folgenden Befehl aus:

> php -v

PHP 5.2.0 (cli) (built: Nov 2 2006 11:57:36)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies

Wenn die Versions-Nummer 5.0 oder größer ist bist Du bereit für die Installation wie sie in diesem Kapitel beschrieben ist.

Die Sandbox installieren

Wenn Du nur sehen möchtest wozu Symfony fähig ist, dürftest Du wahrscheinlich eine schnelle Installation wünschen. Was Du in diesem Fall brauchst ist die Sandbox.

Die Sandbox ist ein einfaches Dateiarchiv. Es beinhaltet ein leeres Symfony-Projekt mit allen benötigen Biblotheken, eine Standard-Applikation und Basiskonfiguration. Es funktioniert direkt (out-of-the-box), ohne spezielle Serverkonfiguration und zusätzliche Pakete. Um es zu installieren lade Dir das Sandbox-Archiv unter [http://www.symfony-project.com/get/sf_sandbox.tgz] herunter. Entpacke es unterhalb Web-Root Ordners Deines Servers (überlicherweise www/ oder web/). Aus Gründen der Einheitlichkeit wird in diesem Kapitel vorausgesetzt, dass Du es in das Verzeichnis ''sf_sandbox/'' entpackt hast.

CAUTION Alle Dateien innerhalb des Web-Root Ordners abzulegen ist okay für Deine eigenen Tests in einer lokalen Umgebung, aber eine schlechte Idee für Produktions-Server. Es macht alle internen Einstellungen und Abläufe für den End-Nutzer sichtbar.

Nun teste Deine Installation durch ausführen des symfony CLI. Begebe Dich in das neue sf_sandbox Verzeichnis und führe folgenden Befehl, für *nix-Systeme, aus:

> ./symfony -V

Unter Windows benutze diesen Befehl:

> symfony -V

Du solltest nun die Sandbox Versionsnummer angezeigt bekommen:

[php]
symfony version 1.0.0

Nun gehe sicher, durch aufrufen der folgenden URL, dass Dein Web-Server die Sandbox erreicht:
{{{ http://localhost/sf_sandbox/web/frontend_dev.php/ }}}

Du solltest nun eine Glückwunschseite ähnlich Abbildung 3-1 sehen und dies bedeutet, dass Deine Installation abgeschlossen ist. Falls nicht, wird Dich eine Fehlermeldung durch die anstehenden Konfigurationsänderungen führen. Du kannst auch zum Abschnitt "Fehlerbehebung" dieses Kapitels springen.

Abbildung 3-1 - Sandbox Glückwunschseite Sandbox congratulations page

Die Sandbox ist zum üben auf einem lokalen Computer gedacht, nicht zur Entwicklung komplexer Anwendungen für das Internet. Wie auch immer, die mit der Sandbox ausgelieferte symfony-Version beinhaltet den vollen Funktionsumfang und ist identisch mit der über PEAR zu beziehenden Variante. Um die Sandbox zu deinstallieren muss einfach der sf_sandbox/ Ordner aus dem Web-Root Ordner entfernt werden.

Installation der Symfony-Bibliotheken

Während der Entwicklung einer Anwendung wirst Du Symfony wahrscheinlich zweimal installieren: Einmal für Deine Entwicklungsumgebung und einmal für deinen Host-Server (es sei denn auf dem Host ist bereits Symfony installiert). Für jeden Server wirst Du sicher Duplikation vermeiden wollen indem Du alle Symfony-Dateien an einen zentralen Ort plazierst, egal ob Du nur eine oder mehrere Anwendungen entwickelst.

Seit sich das Symfony-Framework schnell weiterentwickelt kann es durchaus passieren das nur wenige Tage nach Deiner ersten Installation eine neue Stable-Version veröffentlicht wird. Du solltest ein Framework-Upgrade als zentrale Angelegenheit bedrachten, was ein weiterer Grund wäre eine zentrale Instanz der Bibliotheken für deine Symfony-Projekte zu schaffen. Wenn es an die Installation der Bibliotheken für ernsthafte Projekte geht hast Du zwei Alternativen.

* Die PEAR-Installation ist für die meisten Leute empfehlenswert. Sie kann einfach verteilt und aktualisiert werden und der Installationsprozeß ist unkompliziert.
* Die Subversion (SVN) Installation ist nur für erfahrende PHP-Entwickler gedacht, welche von den letzten Patches und Updates profitieren wollen oder Features für sich brauchen dem Symfony-Projekt beisteuern möchten.

Symfony integriert zusätzlich einige Pakete:

* pake, ein CLI-Tool
* lime, ein Unit-Testing-Tool
* Creole, eine Datenbank-Abstraktions-Engine. Genau wie PHP Data Objects (PDO), bietet Sie eine Schnittstelle zwischen Deinem und dem Datenbank-SQL Code und macht es so möglich zu einer anderen Datenbank-Engine zu wechsel.
* Propel, für ORM. Es liefert persistente Objekte und Abfrage-Dienste.
* Phing, ein CLI für Propel

Pake und lime werden vom Symfony-Team entwickelt. Creole, Propel und Phing stammen von einem anderen Team und werden unter der GNU Lesser Public General License (LGPL) veröffentlicht. Diese Pakete sind alle mit Symfony verbunden.

Installation des Symfony PEAR Package

Das Symfony PEAR Package beinhaltet die Symfony Bibliotheken und all seine Abhängigkeiten. Ebenso beinhaltet es auch ein Script um dein CLI um den Symfony Befehl zu erweitern.Der erste Installations-Schritt ist das hinzufügen des Symfony Kanals zu PEAR, durch ausführen des folgenden Befehls:

> pear channel-discover pear.Symfony-project.com

Um die, im Kanal enthaltenden, Bibliotheken zu sehen tippe folgendes ein:

> pear remote-lost -c symfony

Nun bist Du bereit um die letzte stabile Version von Symfony zu installieren. Führe dazu diesen Befehl aus:

> pear install symfony/symfony

downloading symfony-1.0.0.tgz ...
Starting to download symfony-1.0.0.tgz (1,283,270 bytes)
.................................................................
.................................................................
.............done: 1,283,270 bytes
install ok: channel://pear.symfony-project.com/symfony-1.0.0

Das war's. Die Symfony-Dateien und die CLI sind installiert. Überprüfe nun die Installation indem du den neuen Symfony-Befehl, zur Abfrage der Versionsnummer, aufrufst:

> symfony -V

symfony version 1.0.0

Falls Du es bevorzugst die neuste Beta, mit den akutellsten Bugfixes und Verbesserungen, zu installieren, tippe stattdessen pear install Symfony/Symfony-beta ein. Beta-Versionen sind nicht vollständig stabil und generell nicht für Produktions-Umgebungen geeignet.

Die Symfony-Bibliotheken sind nun in den folgenden Verzeichnissen installiert:

  • $php_dir/Symfony/ beinhaltet die Basis-Bibliotheken
  • $data_dir/Symfony/ beinhaltet das Skelett der Symfony-Anwendungen, Standard-Module und -Konfiguration, i18n Daten usw.
  • $doc_dir/Symfony/ beinhaltet die Dokumentation
  • $test_dir/Symfony/ beinhaltet die Unit Tests

Die _dir Variablen sind Teil Deiner PEAR Konfiguration. Ihre Werte kannst DU durch Eingabe des folgenden Befehls sehen:

> pear config-show

Symfony aus dem SVN Repository auschecken

Für Produktions-Server, oder falls PEAR keine Option ist, kannst DU die aktuellste Version der Symfony-Bibliotheken direkt, durch einen CheckOut, aus dem Symfony SVN-Repository herunterladen:

> mkdir /path/to/Symfony
> cd /path/to/Symfony
> svn checkout http://svn.Symfony-project.com/tags/RELEASE_1_0_0/ .

Der Symfony Befehl, nur verfügbar für die PEAR-Installation, ist ein Aufruf des /path/to/Symfony/data/bin/Symfony Scripts. Deshalb wäre der folgende Befehl für eine SVN-Installation identisch mit dem Symfony -V Befehl:

> php /path/to/Symfony/data/bin/Symfony -V

Symfony version 1.0.0

Wenn Du Dich für eine SVN-Installation entschieden hast, hast Du wahrscheinlich bereits ein bstehendes Symfony-Projekt. Damit dieses Projekt diese   Symfony-Dateien nutzen kannst musst Du zwei Variablen in der config/config.php des Projekts wie folgt ändern:

[php]
<?php

$sf_Symfony_lib_dir  = '/path/to/Symfony/lib/';
$sf_Symfony_data_dir = '/path/to/Symfony/data/'

Kapitel 19 zeigt andere Wege um ein Projekt mit einer Symfony-Installation zu verbinden (unter der Verwendung von symbolischen Links und relativen Pfaden).

NOTE Alternative kannst Du das PEAR-Packet herunterladen (http://pear.Symfony-project.com/get/Symfony-1.0.0.tgz) und es irgendwo entpacken. Du würdest das selbe Ergebnis wie mit einem SVN-Checkout erhalten.

Installation einer Applikation

Wie Du bereits in Kapitel 2 gelernt hast, fasst Symfony zusammengehörende Applikationen in Projekten zusammen. Alle Applikationen eines Projektes teilen sich die gleiche Datenbank. Um eine Applikation zu installieren, musst Du zuerst ein Projekt installieren.

Das Projekt erzeugen

Jedes Symfony-Projekt folgt einer vordefinierten Verzeichnisstruktur. Die Symfony-Kommandozeile automatisiert die Erzeugung von neuen Projekten, indem es ein Grundgerüst des Projektes erzeugt mit der richtigen Verzeichnisbaumstruktur und Zugriffsrechten. Um also ein Projekt zu erzeugen, erzeuge einfach ein neues Verzeichnis und bitte Symfony, es zu einem Projekt zu machen. Bei einer PEAR-Installation benutze diese Befehle:

> mkdir ~/myproject
> cd ~/myproject
> Symfony init-project myproject

Im Falle einer SVN-Installation erzeugst Du ein Projekt mit diesen Befehlen:

> mkdir ~/myproject
> cd ~/myproject
> php /path/to/Symfony/data/bin/Symfony init-project myproject

Der Symfony-Befehl mus immer vom Basisverzeichnis des Projekts aus aufgerufen werden (myproject/ in den bisherigen Beispielen), weil alle Aufgaben dieser Kommands projektspezifisch sind.

Symfony wird eine Verzeichnisstruktur aussehen, die folgendermassen aussieht:

apps/
batch/
cache/
config/
data/
doc/
lib/
log/
plugins/
test/
web/

NOTE Der init-project-Befehl erzeugt im Projekt-Wurzelverzeichnis ein Symfony-Skript. Dieses PHP-Skript tut dasselbe wie der Symfony-Befehl bei der PEAR-Installation, Du kannst also auch php Symfony anstatt Symfony nehmen, wenn du (bei einer SVN-Installation) nicht native Kommandozeilenunterstützung hast.

Die Applikation erzeugen

Man kann sich das Projekt jetzt noch nicht anschauen, denn es benötigt mindestens eine Applikation. Um diese zu initialisieren, benutze den Befehl Symfony init-app und übergib ihm den Namen der Aplikation als Argument:

> Symfony init-app myapp

Das erzeugt ein myapp/-Verzeichnis im apps/-Verzeichnis des Projektes mit einer Standardkonfiguration und einigen Verzeichnissen, in denen Deine Website gehostet wird:

apps/
  myapp/
    config/
    i18n/
    lib/
    modules/
    templates/

Einige PHP-Dateien gehören zum Front-Controller jeder Standardumgebung und sind auch im web-Verzeichnis des Projektes zu finden:

web/
  index.php
  myapp_dev.php

index.php ist der Front Controller der Produktionsumgebung der neuen Applikation. Weil Du die erste Applikation des Projektes erzeugt hast, hat Symfony eine Datei index.php erzeugt anstatt myapp.php (wenn Du eine neue Applikation mynewapp hinzufügst, heisst der neue Front Controller mynewapp.php). Um Deine Applikation in der Entwicklungsumgebung zu starten, ruf den Front Controller myapp_dev.php auf. Über diese verschiedenen Umgebungen wirst du im Kapitel 5 mehr erfahren.

Den Webserver konfigurieren

Die Skripte im web/-Verzeichnis sind die Eintrittspunkte der Applikation. Um auf sie vom Internet aus zugreifen zu können, muss der Webserver entsprechend konfiguriert werden. In Deinem Entwicklungsserver wie auch bei einer professionellen Hostinglösung hast Du vermutlich Zugriff auf die Apache-Konfiguration und kannst einen virtuellen Host aufsetzen. Bei einem Shared-Hosting-Server hast Du vermutlich nur Zugriff auf eine .htaccess-Datei.

Einen virtuellen Host aufsetzen

Codeabschnitt 3-1 ist ein Beispiel einer Apachekonfiguration, wo ein neuer virtueller Host zur httpd.conf-Datei hinzufgeügt wurde.

Codeabschnitt 3-1 - Beispielhafte Apachekonfiguration in apache/conf/httpd.conf

<VirtualHost *:80>
  ServerName myapp.example.com
  DocumentRoot "/home/steve/myproject/web"
  DirectoryIndex index.php
  Alias /sf /$sf_Symfony_data_dir/web/sf
  <Directory "/$sf_Symfony_data_dir/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
  <Directory "/home/steve/myproject/web">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

In der Konfiguration von Doeabschnitt 3-1 muss der $sf_Symfony_data_dir-Plathhalter durch das tatsächliche Verzeichnis ersetzt werden. Beispielsweise bei einer PEAR-Installation in *nix gibst Du so etwas ein:

Alias /sf /usr/local/lib/php/data/Symfony/web/sf

TIP Der Alias zum web/sf/-Verzeichnis ist nicht zwingend. Er erlaubt es Apache, Bilder, Stylesheets und Javascript-Dateien zu finden für die Web-Debug-Toolbar, den Admin Generator, die Standard-Symfony-Pages und Ajaxunterstützung. Eine Alternative zu diesem Alias wäre das Erzeugen eines symbolischen Links oder das Verzeichnis /path/to/Symfony/data/web/sf/ ins Verzeichnis myproject/web/sf/ zu kopieren.

Starte Apache neu, das war's schon. Deine neu erstelle Applikation kann jetzt aufgerufen und mit einem Standard-Webbrowser unter der folgenden URL betrachtet werden:

http://localhost/myapp_dev.php/

Du solltest eine Gratulations-Page ähnlich der in Abb. 3-1 sehen.

SIDEBAR URL Rewriting

Symfony verwendet URL rewriting, um "schlaue URLs" anzuzeigen - kanonische Adressen, die gut für die Suchmaschinen sind und alle technischen Details vor dem User verbergen. Du wirst in Kapitel neun mehr über dieses Feature, genannt Routing, erfahren.

Wenn Deine Apache-Version nicht mit dem mod_rewrite-Modul kompiliert wurde, stell sicher, dass du das mod_rewrite Dynamic Shared Object (DSO) installiert hast und die folgenden Zeile in deiner httpd.conf stehen:

AddModule mod_rewrite.c LoadModule rewrite_module modules/mod_rewrite.so

Für Internet Information Services (IIS) muss isapi/rewrite installiert sein. In der Symfony-Online-Dokumentation findest du eine detaillierte IIS-Installationsanleitung.

Einen Shared-Hosting-Server konfigurieren

Eine Applikation bei einem Shared Hoster aufzusetzen ist ein wenig komplizierter, weil der Hoster normalerweise eine bestimmte Verzeichnisstruktur vorgibt, die Du nicht ändern kannst.

NOTE Tests und Entwicklung direkt in einer Shared-Host-Umgebung zu machen, ist keine gute Idee. Ein Grund liegt darin, dass die Applikation bereits sichtbar ist, bevor sie fertiggestellt wurde und dadurch Sicherheitsprobleme entstehen können. Ein anderer Grund ist der, dass die Performance bei Shared Hostern oft nicht ausreicht, um deine Applikation mitsamt den Debugtools effizient laufen zu lassen. Du solltest also die Entwicklung nicht bei einem Shared Hoster beginnen, sondern sie erst einmal lokal entwickeln und erst dann auf den Shared Hoster übertragen, wenn sie fertig ist. In Kapitel 16 erfährst du mehr darüber, wie diese Übertragung genau stattfindet.

Stellen wir uns einmal vor, Dein Shared Hoster verlange, dass das Webverzeichnis www/ heisst anstatt web/ und er dir keinen Zugriff auf die httpd.conf-Datei gewährt, sondern nur auf eine .htaccess-Datei im Webverzeichnis.

In einem Symfony-Projekt ist jeder Pfad zu einem Verzeichnis konfigurierbar. In Kapitel 19 erfährst Du mehr darüber, aber in der Zwischenzeit kannst du immer noch das web-Verzeichnis in www umbenennen und die Konfiguration entsprechend ändern (s. Codeabschnitt 3-2). Diese Zeilen müssen ans Ende der config.php-Datei der Applikation angehängt werden.

Listing 3-2 - Die Einstellungen der Standardverzeichnisstruktur ändern in apps/myapp/config/config.php [php] $sf_root_dir = sfConfig::get('sf_root_dir'); sfConfig::add(array( 'sf_web_dir_name' => $sf_web_dir_name = 'www', 'sf_web_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.$sf_web_dir_name, 'sf_upload_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.$sf_web_dir_name.DIRECTORY_SEPARATOR.sfConfig::get('sf_upload_dir_name'), ));

Das Projekt-Basisverzeichnis enthält standardmässig eine .htaccess-Datei. Ihren Inhalt siehst Du in Codeabschnitt 3-3. Verändere sie, um Symfony deinen Shared-Hoster-Bedingungen anzupassen.

Codeabschnitt 3-3 - Standard-.htaccess-Konfiguration, jetzt in myproject/www/.htaccess Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
  RewriteEngine On

  # we skip all files with .something
  RewriteCond %{REQUEST_URI} \..+$
  RewriteCond %{REQUEST_URI} !\.html$
  RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

# big crash from our front web controller
ErrorDocument 500 "<h2>Application error</h2>Symfony applicationfailed to start properly"

Du solltest jetzt deine Applikation aufrufen können. Wiederum begrüsst dich eine Gratulationsseite unter dieser URL:

http://www.example.com/myapp_dev.php

SIDEBAR Andere Serverkonfigurationen

Symfony ist mit anderen Serverkonfigurationen kompatibel. Du kannst beispielsweise auch einen Alias anstatt einen virtuellen Host verwenden, um auf eine Symfony-Applikation zuzugreifen. Du kannst Symfony auch mit einem IIS-Server betreiben. Es gibt unzählige Konfigurationen, und dieses Buch hat nicht zum Ziel, sie alle zu erklären.

Um Hinweise zu einer bestimmten Serverkonfiguration zu finden, suche im Symfony-Wiki ([http://www.Symfony-project.com/trac/wiki]), das viele Schritt-für-Schritt-Tutorials enthält.

Problembehandlung

Wenn du Probleme hast bei der Installation, versuche das beste, irgendetwas sinnvolles aus den Fehlermeldungen in der Eingabeaufforderung oder im Browser herauszulesen. Sie sind oft selbsterklärend und enthalten manchmal sogar Links zu bestimmten Websites, die Dir weiterhelfen können.

Typische Probleme

Wenn du immer noch Probleme hast, Symfony zum Laufen zu bringen, mach folgendes:

  • Einige PHP-Installationen kommen sowohl mit einem PHP-4- als auch mit einem PHP-5-Befehl. In diesem Fall ist der Befehl in der Eingabeaufforderung vermutlich php5 anstatt php, rufe also php5 Symfony anstatt Symfony auf. Möglicherweise musst du auch noch SetEnv PHP_VER 5 zu deiner .htaccess-Konfiguration hinzufügen, oder benenne die Skripts im web/-Verzeichnis von .php um in .php5. Der Fehler, der von einer PHP-4-Eingabeaufforderung ausgegeben wird beim Versuch, auf Symfony zuzugreifen, sieht folgendermassen aus:

    Parse error, unexpected ',', expecting '(' in .../Symfony.php on line 19.

  • Das Speicherlimit, das in der php.ini definiert ist, muss mindestens 16 MB betragen. Üblicherweise kommt andernfalls eine Fehlermeldung, wenn man Symfony via PEAR oder Eingabeaufforderung installiert.

    Allowed memory size of 8388608 bytes exhausted

  • Die zend.ze1_compatibility_mode-Einstellung in der php.ini muss auf off gestellt sein. Wenn dem nicht so ist, wird beim Aufrufen einer der Webskripte folgender Fehler auftreten:

    Strict Standards: Implicit cloning object of class 'sfTimer'because of 'zend.ze1_compatibility_mode'

  • Die log/- und cache/-Verzeichnisse deines Projektes müssen auf dem Server beschreibbar sein. Wenn Du eine Symfony-Applikation ohne diese Verzeichnisberechtigungen besuchst, tritt eine Ausnahme auf:

    sfCacheException [message] Unable to write cache file"/usr/myproject/cache/frontend/prod/config/config_config_handlers.yml.php"

  • Der Include-Pfad deines Systems muss den Pfad zum php-Kommando beinhalten, und der Include-Pfad deiner php.ini muss einen Pfad zu PEAR enthalten (wenn du PEAR benutzt).

  • Manchmal gibt es mehr als eine php.ini im Dateisystem eines Servers (z.B. wenn du das WAMP-Paket benutzt). Rufe dann phpinfo() auf, um den genauen Standort derjenigen php.ini-Datei herauszufinden, die deine Applikation benutzt.

NOTE Obwohl es nicht notwendig ist, empfehlen wir aus Performancegründen, magic_quotes_gpc und register_globals in deiner php.ini auf off zu stellen.

Symfony-Ressourcen

Du kannst an verschiedenen Stellen überprüfen ob Dein Problem bereits jemand anderem wiederfahren ist und so Lösungen finden: * Das Symfony Installations-Forum ([http://www.Symfony-project.com/forum/]) ist voll mit Fragen rund um die benutzte Plattfrom, Umgebgung, Konfiguration, Host usw. Die Archive der User Mailing-List ([http://groups.google.fr/group/Symfony-users]) sind ebenso durchsuchbar. Hier könntest Du ähnliche Erfahrungen anderer User finden. Das Symfony-Wiki ([http://www.Symfony-project.com/trac/wiki#InstallingSymfony]) beinhaltet Schritt für Schritt Tutorials für die Installation, verwaltet Symfony Benutzern.

Falls Du trotzdem keine Antwort findest, versuche Deine Frage der Symfony-Community darzustellen. Du kannst Deine Anfrage im Forum, der Mailing-Liste oder sogar im #Symfony IRC Kanal stellen um Feedback von den aktivsten Mitgliedern der Community zu bekommen.

Code-Versionierung

Nachdem die Anwendung einmal installiert wurde ist es empfehlenswert mit der Code-Versionierung (oder Version-Kontrolle) anzufangen. Code-Versionierung dokumentiert alle Änderungen des Quellcodes, ermöglicht den Zugriff auf vorherige Veröffentlichungen, erleichert Patches und berücksichtigt effizente Team-Arbeit. Symfony unterstütz CVS nativ, trotzdem wird Subversion (http://subversion.tigris.org/) empfohlen. Die folgenden Beispiele zeigen die nötigen Subversion Befehle und setzen voraus das Du bereits einen installierten Subversion Server im Einsatz hast und ein neues Repository für Dein Projekt anlegen möchtest. Für Windows Nutzer ist TortoiseSVN (http://tortoisesvn.tigris.org/) ein empfehlenswerter Subversion Client. Ziehe die Subversion-Dokumentation zu Hilfe, falls Du mehr Information über Code-Versionierung und den hier benutzten Befehlen wünscht.

Das folgende Beispiel setzt voraus das $SVNREP_DIR als Umgebungs-Variable definiert ist. Falls dies nicht der Fall ist musst Du $SVNREP_DIR durch die aktuelle Position des Repositories ersetzen. Nun lass uns ein neues Repository für das myproject Projekt erstellen:

> svnadmin create $SVNREP_DIR/myproject

Nun wird die Basis-Struktur (Layout) des Repository mit den trunk, tags, und branches Ordnern angelegt, dazu wird dieser schön lange Befehl verwendet:

> svn mkdir -m "layout creation" file:///$SVNREP_DIR/myproject/trunk file:///$SVNREP_DIR/myproject/tags file:///$SVNREP_DIR/myproject/branches

Dies wird Deine erste Revision sein. Nun musst Du die Projektdateien, ausgenommen die temporären Cache- und Protokol-Dateien, importieren

> cd ~/myproject
> rm -rf cache/*
> rm -rf log/*
> svn import -m "initial import" . file:///$SVNREP_DIR/myproject/trunk

Überprüfe die übermittelten Dateien durch Eingabe des Folgenden:

> svn ls file:///$SVNREP_DIR/myproject/trunk/

Scheint soweit in Ordnung zu sein. Jetzt liegen im SVN-Repository die Referenzversionen (und die History) all deiner Projektdateien. Das bedeutet, dass sich die Dateien im ~/myproject/-Verzeichnis direkt aufs Repository verweisen müssen. Um das zu erreichen, musst du zuerst das myproject/-Verzeichnis umbenennen – wenn alles klappt, löschst Du das ohnehin bald – und machst einen Checkout aus dem Repository in ein neues Verzeichnis:

> cd ~
> mv myproject myproject.origin
> svn co file:///$SVNREP_DIR/myproject/trunk myproject
> ls myproject

Das war’s auch schon. Jetzt kannst du mit den Dateien im ~/myproject/-Verzeichnis arbeiten und deine Änderungen ins Repository übertragen. Vergiss die Aufräumarbeiten nicht: Du musst noch das myproject.origin/-Verzeichnis löschen, das du jetzt nicht mehr brauchst.

Eine Sache wäre da allerdings noch. Wenn du das Verzeichnis ins Repository commitest, kopierst du möglicherweise einige ungewollte Daten, wie diejenigen in den cache- und log-Verzeichnissen deines Projektes. Also musst du eine SVN-Ignoreliste für dein Projekt erstellen. Jetzt brauchst du wieder vollen Zugriff auf das cache/- und log/-Verzeichnis:

> cd ~/myproject
> chmod 777 cache
> chmod 777 log
> svn propedit svn:ignore log
> svn propedit svn:ignore cache

Der Standard-Texteditor für SVN sollte jetzt starten. Wenn sich nichts tut, sag Subversion so, welcher dein Lieblingseditor ist:

> export SVN_EDITOR=<name of editor>
> svn propedit svn:ignore log
> svn propedit svn:ignore cache

Jetzt füge einfach noch alle Dateien hinzu, die SVN aus den Unterverzeichnissen von myproject/ bei einem Commit ignorieren soll:

*

Speichern und beenden. Das war’s.

Zusammenfassung

Um auf Deinem lokalen Server etwas mit Symfony herumzuspielen, ist die Sandbox definitiv die beste Möglichkeit, da sie eine vorkonfigurierte Symfony-Umgebung enthält. Beim richtigen Entwickeln oder auf einem Produktivserver solltest du die PEAR-Installation oder den SVN-Checkout wählen. Dabei werden die Symfony-Bibliotheken installiert, aber du musst zuerst noch ein Projekt und eine Applikation initialisieren. Der letzte Schritt beim Aufsetzen der Applikation ist die Serverkonfiguration, bei der es viele verschiedene Möglichkeiten gibt. Symfony funktioniert problemlos mit einem virtuellen Host, und wir empfehlen auch, einen solchen zu benutzen.

Sollten irgendwelchen Probleme während der Installation auftreten, findest du auf der Symfony-Website viele Tutorials und FAQs. Solltest du dort nichts finden, kannst du dein Problem in der Symfony-Community posten, dann bekommst du schnell eine hilfreiche Antwort.

Wenn dein Projekt erst einmal initialisiert ist, ist es eine gute Idee, mit der Versionskontrolle zu beginnen.

Jetzt da du bereit bist, Symfony zu benutzen, wird es Zeit, uns anzusehen, wie wir eine einfache Webapplikation basteln können.