Kapitel 13. Welcompose konfigurieren

Inhaltsverzeichnis

13.1. Die Datei sys.inc.php
13.1.1. Pfade [path]
13.1.2. Logging [log]
13.1.3. Umgebungsvariablen [enviroment]
13.1.4. Spracheinstellungen [locales]
13.1.5. Datenbank [database]
13.1.6. Media [media]
13.1.7. Globale Dateien [global_files]
13.1.8. Caching [caching]
13.1.9. Komprimierung [output]
13.1.10. Projektauswahl speichern [cookie]
13.1.11. Plugins [plugins]
13.1.12. URL-Muster [urls]
13.1.13. Flickr [flickr]

13.1. Die Datei sys.inc.php

Die sys.inc.php Datei ist die zentrale Konfigurationsdatei von Welcompose, in der die zum Betrieb der Software notwendigen Einstellungen definiert werden. Es ist sozusagen das Herz der Software.

[Anmerkung] Anmerkung

Die allermeisten Parameter der hier aufgeführten Konfigurationsabschnitte brauchen Sie nicht manuell anpassen. Sie werden während der Installation von Welcompose durch die Angaben im Setup-Prozeß automatisch gesetzt und/oder generiert.

13.1.1. Pfade [path]

wcom_admin_root_www

Pfad zum Stammverzeichnis des Welcompose Backend. Wird in vielen Dateien als Prefix benötigt und durch die Angaben im Setup-Prozeß eingefügt.

wcom_public_root_www

Pfad zum Stammverzeichnis der Ausgabeseite. Wird in vielen Dateien als Prefix benötigt und durch die Angaben im Setup-Prozeß eingefügt.

13.1.2. Logging [log]

Welcompose bringt ein Logging Framework mit, das das Logging von Fehlern auf viele verschiedene Arten ermöglicht. Verwendet wird dabei das PEAR-Paket Log[18]. Allerdings ist das Logging von Haus aus deaktiviert, um Sicherheitsprobleme durch offen zugängliche Logdateien zu vermeiden.

13.1.2.1. Logging in Datei

Standardmässig empfiehlt sich das Logging in eine Datei. So können auch Fehler entdeckt werden, die beim regulären Betrieb der Webseite auftauchen, die normalerweise unbemerkt bleiben.

Um das Logging in eine Datei zu aktivieren, gilt es zuerst, einen geeigneten Speicherplatz für die Logdatei zu finden.

[Warnung] Warnung

STELLEN SIE UNTER ALLEN UMSTÄNDEN SICHER, DASS DIE LOGDATEIEN NICHT ÜBER DAS WEB EINSEHBAR SIND! Ist das nicht möglich, verzichten Sie auf das Logging.

Erlaubt der Webhoster das Schreiben in Verzeichnisse, die nicht vom Web aus zugänglich sind, sollte dort ein Ordner angelegt werden (beispielsweise mit dem Namen log/) und dessen Rechte so verändert werden, dass PHP dort hineinschreiben kann. Setzen Sie für den Schlüssel handler den Wert file und für den Schlüssel name den Pfad vom Dateisystem-Root zur Logdatei im soeben angelegten Ordner. Beispiel:

[log]
handler = "file"
name = "/var/log/welcompose/welcompose.log"
level = PEAR_LOG_WARNING

Kann nur auf Verzeichnisse zugegriffen werden, die über das Web einsehbar sind, kann das bei der Welcompose-Installation vorbereitete Verzeichnis tmp/log/ verwendet werden. Setzen Sie für den Schlüssel handler den Wert file. Den Pfad beim Schlüssel name können Sie stehen lassen, da er beim Setup korrekt erzeugt worden sein sollte. Beispiel:

[log]
handler = "file"
name = "/www/meinewebsite.tld/tmp/log/welcompose.log"
level = PEAR_LOG_WARNING

Nun müssen Sie den Zugriff auf das Verzeichnis tmp/log/ vom Web aus unterbinden. Es gibt dazu verschiedene Möglichkeiten:

Server-Konfiguration anpassen

Bei den meisten Webhostern ist eine passende Änderung der Server-Konfiguration relativ einfach zu bewerkstelligen, sofern auf Apache gesetzt wird. So kann einfach eine Datei mit dem Namen .htaccess und dem Inhalt Deny from all in tmp/log/ abgelegt und damit der Zugriff auf das Verzeichnis verwehrt werden. Deny from all kann ebenfalls direkt in der Server-Konfigurationsdatei httpd.conf verwendet werden. Um zu erfahren, wie dies genau geht und was bei anderer Webserver-Software wie lighttpd oder Cherokee getan werden muss, konsultieren Sie bitte die Dokumentation der jeweiligen Produkte.

Schreibrechte ändern

Das Ändern der Schreibrechte des Ordners tmp/log/ ist eine Vorgehensweise, die unabhängig der verwendeten Server-Software, aber nicht auf Windows funktioniert. Sie basiert darauf, dass dem Anwender und der Gruppe des Webservers die Leserechte für das Verzeichnis entzogen werden. Wenn Sie nicht selber wissen, wie das geht, wenden Sie sich bitte an den Provider-Support, weil eine korrekte Konfiguration ohne genaue Kenntnis des Server-Setups unmöglich ist.

13.1.2.2. Direkte Ausgabe

[Warnung] Warnung

VERWENDEN SIE DIE DIREKTE AUSGABE KEINESFALLS IM PRODUKTIVEINSATZ!

Beim Aufsetzen oder bei der Entwicklung mit Welcompose kann es angenehm sein, Fehler direkt beim Seitenaufruf zu Gesicht zu bekommen. PEAR::Log stellt dazu zwei verschiedene Log-Handler bereit.

Für jeden Anwender und jeden Browser funktioniert der sogenannte Display Handler. Er gibt die Debug- und Fehlermeldungen direkt aus, wie dies PHP auch tut. Um den Display Handler zu aktivieren, setzen Sie für den Schlüssel handler den Wert display und für den Schlüssel name einen leeren Wert.

[log]
handler = "display"
name = 
level = PEAR_LOG_WARNING

Für Anwender des Webbrowsers Firefox gibt es mit der Firebug-Extension [19] eine optisch attraktive Alternative zum Display Handler, bei der die Fehler im Rahmen der Firebug-Konsole und nicht direkt in der Seite ausgegeben werden.

Um den Firebug Handler zu aktivieren, setzen Sie für den Schlüssel handler den Wert firebug und für den Schlüssel name einen leeren Wert.

[log]
handler = "firebug"
name = 
level = PEAR_LOG_WARNING

13.1.2.3. Log Level

PEAR::Log unterstützt eine Vielzahl von Log Levels, mit denen die zu loggenden Debug- oder Fehlermeldungen gefiltert werden können. So ergibt es beispielsweise keinen Sinn, im Produktivbetrieb Debug-Meldungen zu loggen.

Für den Produktivbetrieb empfiehlt sich die Verwendung des Log Levels PEAR_LOG_INFO respektive PEAR_LOG_WARNING. PEAR_LOG_INFO entspricht etwa PHPs Log Level E_NOTICE und höher während PEAR_LOG_WARNING E_WARNING und höher entspricht.

Für die Entwicklung von Welcompose kann auf die Log Levels für den Produktivbetrieb oder PEAR_LOG_DEBUG gesetzt werden.

13.1.3. Umgebungsvariablen [enviroment]

debug

Ist momentan nicht dokumentiert (Stand: 08.01.2012)

app_key

Unikater Kennungsschlüssel, der während Installation von Welcompose generiert wird. Er wird u.a. dafür genutzt, um im Installer-Script eine eindeutige Passwortphrase zu erstellen und die Eindeutigkeit beim Anlegen eines Backend-Benutzer Cookies zu gewährleisten.

13.1.4. Spracheinstellungen [locales]

all

Sprachwahl für das Backend in DIN ISO 3166 Schreibweise. Die Sprachwahl, im Setup-Prozeß angeben wird, kann hier manuell angepasst werden. Es stehen die Sprachen Deutsch (de_DE.UTF-8) und Englisch (en_GB.UTF-8, Standard) zur Verfügung. Die Angaben beziehen sich auf Text und Datumsangaben (LC_ALL). Wird durch die Angaben im Setup-Prozeß eingefügt.

[Anmerkung] Anmerkung

Für alle Welcompose Version < 0.9.0, die noch mit der Zeichenkodierung ISO-8859-1 arbeiten, tragen Sie bitte hier (de_DE) ein.

numeric

Diese Einstellung ist sozusagen die Rückfalloption, falls der Wert des Parameters all auf dem Server nicht verfügbar ist. C ist eine Einstellung, die jeder Server beherrscht und die grundsätzlichen Formate abdeckt.

13.1.5. Datenbank [database]

driver

Treiber für die Datenbankkommunikation. Mögliche Angaben sind mysqli und pdo (Standard).

dsn

Data Source Name für die Verbindung zur Datenbank. Wird durch die Angaben im Setup-Prozeß automatisch generiert.

username

Der Datenbank-Benutzername. Wird durch die Angaben im Setup-Prozeß eingefügt.

password

Der Datenbank-Passwort. Wird durch die Angaben im Setup-Prozeß eingefügt.

table_alias_constants

Welcompose arbeitet intern mit Konstanten für die Tabellen der Datenbank. Bitte belassen sie den Wert in der Standardeinstellung (true).

debug

Ist momentan nicht dokumentiert (Stand: 08.01.2012)

backticks

In einigen Fällen ist es für die Syntax einer Datenbankabfrage notwendig variable Werte mit sog. Backticks zu umschließen. Bitte lassen die Standardeinstellung auf true.

13.1.6. Media [media]

store_www

Relativer Pfad zum Speicherort der Media-Dateien. Wird in vielen Dateien als Prefix benötigt.

store_disk

Absoluter Pfad zum Speicherort der Media-Dateien ausgehend vom Root-Verzeichnis des Servers. Wird in vielen Dateien als Prefix benötigt.

chmod

Oktale Angabe von Schreibrechten. Bitte beachten Sie nachstehenden Abschnitt.

13.1.6.1. Schreibrechte Datei-Uploads

Einige Webspace-Provider[20] haben ihre Server derart konfiguriert, dass sie hochgeladene Dateien so ablegen, dass sie vom Webserver nicht gelesen werden können.

Um dieses Problem zu beheben, muss Welcompose angewiesen werden, die Rechte der Dateien nach dem Upload zu modifizieren. Setzen Sie als Wert den oktalen Wert für die gewünschten Schreibrechte, die Welcompose setzen soll. Im Beispiel wurde 0644 gewählt. Wenn Sie nicht wissen, welchen Wert Sie wählen sollen, wenden Sie sich bitte an den Provider-Support:

[media]
...
chmod = 0644

[global_file]
...
chmod = 0644
[Warnung] Warnung

Achten Sie darauf, nicht die führende Null zu vergessen, da der Wert sonst dezimal interpretiert wird, was zu falschen Rechten führt!

Wenn Sie nun Dateien hochladen, sollten diese angezeigt werden.

13.1.7. Globale Dateien [global_files]

store_www

Relativer Pfad zum Speicherort der Globalen Dateien. Wird in vielen Dateien als Prefix benötigt.

store_disk

Absoluter Pfad zum Speicherort der Globalen Dateien ausgehend vom Root-Verzeichnis des Servers. Wird in vielen Dateien als Prefix benötigt.

chmod

Oktale Angabe von Schreibrechten.

[Anmerkung] Anmerkung

Beachten Sie auch die Hinweise zu Datei-Uploads unter Abschnitt 13.1.6.1, „Schreibrechte Datei-Uploads“

13.1.8. Caching [caching]

Diese Einstellung ist momentan noch nicht verfügbar (Stand: 08.01.2012)

13.1.9. Komprimierung [output]

gunzip

Ist dieser Parameter gesetzt (1), werden alle Seiten und CSS-Dateien Gzip-komprimiert ausgeliefert. Dieses beschleunigt den Seitenaufruf. Mögliche Eingaben: 1 oder 0 (Standard).

13.1.10. Projektauswahl speichern [cookie]

lifetime

Legen Sie fest, wie lange die Auswahl des aktuell eingestellten Projektes im Adminbereich gültig ist. Angabe nicht relevant, wenn nur ein Projekt vorhanden ist. Die Werteangaben erfolgen im Format Millisekunden und beliebig anpassbar. Standardwert 2592000 (30 Tage).

13.1.11. Plugins [plugins]

textconverter_dir

Absoluter Pfad zum Speicherort der Textkonverter ausgehend vom Root-Verzeichnis des Servers.

textmacro_dir

Absoluter Pfad zum Speicherort der Textmakros ausgehend vom Root-Verzeichnis des Servers.

13.1.12. URL-Muster [urls]

Welcompose nutzt in seiner Standardeinstellung parametisierte URLs. Jedes URL-Muster wird einem Namen zugeordnet, der sich aus verschiedenen Angaben zusammensetzt. Ausführliche und detailierte Informationen hierzu finden Sie im Abschnitt 14.3.1, „URL-Muster“

Aktuelle URL-Muster (Welcompose Version 0.9.4):

blog_index = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index"
blog_index_tag = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;tag=<tag_word>"
blog_index_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;start=<start>"
blog_index_tag_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;tag=<tag_word>&amp;start=<start>"
blog_index_start = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index"
blog_index_start_tag = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;tag=<tag_word>"
blog_index_start_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;start=<start>"
blog_index_start_tag_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;tag=<tag_word>&amp;start=<start>"
blog_atom_10 = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Atom10"
blog_atom_10_tag = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Atom10&amp;tag=<tag_word>"
blog_atom_10_start = "/index.php?project_name=<project_name>&amp;action=Atom10"
blog_atom_10_start_tag = "/index.php?project_name=<project_name>&amp;action=Atom10&amp;tag=<tag_word>"
blog_rss_20 = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Rss20"
blog_rss_20_tag = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Rss20&amp;tag=<tag_word>"
blog_rss_20_start = "/index.php?project_name=<project_name>&amp;action=Rss20"
blog_rss_20_start_tag = "/index.php?project_name=<project_name>&amp;action=Rss20&amp;tag=<tag_word>"
blog_comments_atom_10 = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=CommentsAtom10"
blog_comments_atom_10_start = "/index.php?project_name=<project_name>&amp;action=CommentsAtom10"
blog_comments_rss_20 = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=CommentsRss20"
blog_comments_rss_20_start = "/index.php?project_name=<project_name>&amp;action=CommentsRss20"
blog_item = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Item&amp;posting_year_added=<posting_year_added>&amp;posting_month_added=<posting_month_added>&amp;posting_day_added=<posting_day_added>&amp;posting_title=<posting_title>"
blog_item_start = "/index.php?project_name=<project_name>&amp;action=Item&amp;posting_year_added=<posting_year_added>&amp;posting_month_added=<posting_month_added>&amp;posting_day_added=<posting_day_added>&amp;posting_title=<posting_title>"
blog_archive_year = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=ArchiveYear&amp;posting_year_added=<posting_year_added>"
blog_archive_year_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=ArchiveYear&amp;posting_year_added=<posting_year_added>&amp;start=<start>"
blog_archive_year_start = "/index.php?project_name=<project_name>&amp;action=ArchiveYear&amp;posting_year_added=<posting_year_added>"
blog_archive_year_start_pager = "/index.php?project_name=<project_name>&amp;action=ArchiveYear&amp;posting_year_added=<posting_year_added>&amp;start=<start>"
blog_archive_month = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=ArchiveMonth&amp;posting_year_added=<posting_year_added>&amp;posting_month_added=<posting_month_added>"
blog_archive_month_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=ArchiveMonth&amp;posting_year_added=<posting_year_added>&amp;posting_month_added=<posting_month_added>&amp;start=<start>"
blog_archive_month_start = "/index.php?project_name=<project_name>&amp;action=ArchiveMonth&amp;posting_year_added=<posting_year_added>&amp;posting_month_added=<posting_month_added>"
blog_archive_month_start_pager = "/index.php?project_name=<project_name>&amp;action=ArchiveMonth&amp;posting_year_added=<posting_year_added>&amp;posting_month_added=<posting_month_added>&amp;start=<start>"
event_index = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index"
event_index_tag = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;tag=<tag_word>"
event_index_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;start=<start>"
event_index_tag_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;tag=<tag_word>&amp;start=<start>"
event_index_start = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index"
event_index_start_tag = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;tag=<tag_word>"
event_index_start_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;start=<start>"
event_index_start_tag_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;tag=<tag_word>&amp;start=<start>"
event_atom_10 = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Atom10"
event_atom_10_tag = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Atom10&amp;tag=<tag_word>"
event_atom_10_start = "/index.php?project_name=<project_name>&amp;action=Atom10"
event_atom_10_start_tag = "/index.php?project_name=<project_name>&amp;action=Atom10&amp;tag=<tag_word>"
event_rss_20 = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Rss20"
event_rss_20_tag = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Rss20&amp;tag=<tag_word>"
event_rss_20_start = "/index.php?project_name=<project_name>&amp;action=Rss20"
event_rss_20_start_tag = "/index.php?project_name=<project_name>&amp;action=Rss20&amp;tag=<tag_word>"
generator_form_index = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index"
generator_form_index_start = "/index.php?project_name=<project_name>&amp;action=Index"
global_template_url = "/global_template.php?project_name=<project_name>&amp;name=<global_template_name>"
global_template_url_start = "/global_template.php?project_name=<project_name>&amp;name=<global_template_name>&amp;&amp;start=<start>"
simple_date_index = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index"
simple_date_index_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;start=<start>"
simple_date_index_start = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index"
simple_date_index_start_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;start=<start>"
simple_date_atom_10 = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Atom10"
simple_date_atom_10_start = "/index.php?project_name=<project_name>&amp;action=Atom10"
simple_date_rss_20 = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Rss20"
simple_date_rss_20_start = "/index.php?project_name=<project_name>&amp;action=Rss20"
simple_form_index = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index"
simple_form_index_start = "/index.php?project_name=<project_name>&amp;action=Index"
simple_guestbook_index = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index"
simple_guestbook_index_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;start=<start>"
simple_guestbook_index_start = "/index.php?project_name=<project_name>&amp;action=Index"
simple_guestbook_index_start_pager = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index&amp;start=<start>"
simple_page_index = "/index.php?project_name=<project_name>&amp;page_name=<page_name>&amp;action=Index"
simple_page_index_start = "/index.php?project_name=<project_name>&amp;action=Index"

13.1.13. Flickr [flickr]

Welcompose bietet im Rahmen des Media Manager Unterstützung für die Photo Sharing Community Flickr[21]. Die Integration von Flickr wird über das öffentliche Web-Service-API realisiert, für deren Nutzung ein spezieller Key von Nöten ist. Der API Key ist für den persönlichen Gebrauch in der Regel kostenlos und kann auf der Flickr-Webseite beantragt[22] werden. Im Rahmen von Welcompose wird kein Flickr API Key mitgeliefert!

Verfügen Sie über einen API Key, tragen Sie ihn als Wert für den Parameter api_key ein.

api_key = "123456789123456789123456789"

Achten Sie zudem darauf, dass für den Parameter cache_encrypt der Wert true gesetzt ist, sodass die gecachten Antworten von Flickr verschlüsselt werden. Der komplette Flickr-Konfigurationsblock sollte nachher etwa so aussehen (abgesehen vom Abweichungen beim cache_dir):

[flickr]
cache_dir = "/pfad/zu/tmp/flickr_cache"
cache_encrypt = true
api_key = "123456789123456789123456789"


[20] Bislang ist uns nur die deutsche Domainfactory bekannt. Sollten Sie weitere Provider kennen, schicken Sie uns bitte eine E-Mail, damit wir die Liste erweitern können.