30 Juli 2013

Typo3 6.x Scheduler bei 1und1 mit Crontab und PHP5.4 einrichten

Endlich habe ich den Typo3-Scheduler in meinem 1und1-Hosting-Paket zum Laufen gebracht! Bei 1und1-Hosting gibt es einige Hürden einen Cronjob einzurichten, nicht zuletzt weil 1und1 standardmäßig nur PHP 4.4 bzw. 5.2 laufen hat, wenn man der offiziellen Anleitung von 1und1 folgt.
Da man für neuere Typo3-Versionen (oder auch Joomla) mindestens PHP 5.3 benötigt, unter anderem für die PHP-Funktion "Namespaces", zeige ich euch, wie ihr einen Cronjob mit PHP 5.4 zum Laufen bringt.

1. Klickt auf "Backend users" und erstellt einen Benutzer Namens "_cli_scheduler". Dieser sollte *kein* Amin-User sein und (aus Sicherheitsgründen) ein anderes Passwort haben als euer Login. Dieser Benutzer wird vom Scheduler verwendet, um die eure eingestellten Aufgaben abzuarbeiten.

2. Öffnet im Typo3-Backend den Menüpunkt "Scheduler" und öffnet den Reiter "Setup check". Hier findet ihr den Pfad zu eurem Scheduler (der so ähnlich aussieht: "/kunden/homepages/xx/dxxxxxxxxx/htdocs/Unterordner/typo3/cli_dispatch.phpsh scheduler"), den ihr euch kopiert - nachher werdet ihr diesen Pfad benötigen.

3. Loggt euch in euer 1und1-Account ein und öffnet unter "Zugänge" den Menüpunkt "SSH-Konfiguration". Hier könnt ihr eure Zugangsdaten für die Shell einsehen und konfigurieren. Diese Zugangsdaten werdet ihr ebenfalls gleich benötigen.

4. Ladet euch Putty herunter (ein kostenloser SSH-Client) und loggt euch mit den Zugangsdaten von Punkt 3 ein.

5. Gebt in der Shell den Befehl "crontab -e" ein, und gebt danach "i" ein, um in den Editier-Modus zu gelangen.

6. Scrollt mit den Cursortasten bis ganz nach unten und gebt dies ein, in 2 Zeilen.

MAILTO=max.mustermann@email.de
0 0 * * * php6 /kunden/homepages/xx/dxxxxxxxxx/htdocs/Unterordner/typo3/cli_dispatch.phpsh schedule


1und1 Typo3 Cronjob Scheduler mit Crontab und SSH einstellen
Zum vergrößern klicken!


Wie ihr erkennen könnt, ist der Abschnitt mit dem Pfad /kunden/.../ der gleiche Pfad aus Punkt 2, den ihr euch notiert habt (natürlich sind die vielen "/xx/xxx/" nur Platzhalter - bei jedem 1und1-Kunden ist der Pfad anders).

Die Zeile mit "MAILTO" ist optional - wenn ihr hier eure E-Mail-Adresse eingebt, bekommt ihr immer einen Statusbericht, wenn mit dem Cronjob etwas nicht richtig läuft.

Mit dem Befehl php6 wird die aktuellste php-dev von 1und1 eingesetzt, in diesem Fall ist es die Version 5.4.17. 

Der Cronjob in diesem Beispiel wird jeden Tag um punkt 0 Uhr ausgeführt. Ich empfehle euch dies beizubehalten, in den meisten Fällen sollte das ausreichen. Solltet ihr andere Zeiten wollen bzw. eine höhere Frequenz, müsst ihr die ersten 5 Zeichen verändern. Hier einige Beispiele:

Jede volle Stunde: 0 * * * *
Jeden Tag um fünf Uhr morgens: 0 5 * * *
An jedem 15. des Monats um Mitternacht: 0 0 15 * *

Ihr könnt optional auch den Befehl > /dev/null hinter "schedule" dranhängen, dann gibt es nur eine Benachrichtigung, wenn eine Fehlermeldung gekommen ist.

7. Um den Editier-Modus von Crontab zu beenden, gebt "Esc" ein, und danach "ZZ". Danach könnt ihr Putty mit dem Befehl "exit" schließen.

8. Das war's! Jetzt wird der Cronjob von 1und1 mit PHP 5.4 ausgeführt und sollte z.B. nicht mehr die Fehlermeldung wegen PHP 5.2 "Unexpected character in input:  '\' (ASCII=92)" ausspucken. Ihr könnt dies nochmal checken, indem ihr nach der zu erwartenden Ausführungszeit wieder im "Setup check" vom Scheduler im Typo3-Backend nachseht ob der Cronjob korrekt ausgeführt wurde.

Wenn ihr irgendwelche Fragen habt, schreibt mir ein Kommentar, ich werde versuchen euch so schnell wie möglich zu antworten!