Zurück zum Blog

TYPO3 Update ohne SSH

Oft kommt es vor, dass bei den Webhosting-Anbietern kein Shell-Zugang (SSH) vorhanden ist, und somit ein TYPO3-Update erschwert wird. Dieser Artikel zeigt zwei Möglichkeiten wie das Update einer TYPO3-Installation mittels PHP oder Perl möglich ist.

TYPO3 Update mit PHP

Ist am Webserver die Einstellung safe_mode auf Off gesetzt, können in der Regel über die PHP-Funktion system() Shell-Befehle ausgeführt werden. Ein TYPO3-Update würde daher mit folgendem Skript funktionieren:

system('wget http://prdownloads.sourceforge.net/typo3/typo3_src-4.5.2.tar.gz');
system('tar -xzf typo3_src-4.5.2.tar.gz');
system('rm typo3_src')
system ('ln -s typo3_src-4.5.2 typo3_src');
PHP-Code zur Durchführung eines TYPO3-Updates

In der ersten Zeile wird der aktuelle TYPO3-Sourcecode auf den Server geladen und in Zeile 2 anschließend entpackt. In Zeile 3 wird der Symlink typo3_src, der auf die momentane TYPO3-Installation zeigt, entfernt. Danach wird dieser Symlink wieder erstellt (Zeile 4), allerdings mit dem Verweis auf den neuen TYPO3-Sourcecode. Alternativ zur Funktion system() könnte auch exec() eingesetzt werden.

TYPO3-Update mit Perl

Ist die Ausführung der oben erwähnten PHP-Funktionen untersagt, kann man sich auch mit der Skript-Sprache Perl helfen, die häufig bei kleinen und billigen Webhosting-Angeboten verfügbar ist. Dazu muss in unserer Lösung vorher die entpackte TYPO3-Sourcedatei auf den Webserver per FTP hochgeladen werden. Da wir leider keine Perl-Profis sind, haben wir noch keine Lösung für das Entpacken von Dateien mit Perl gefunden. In den Kommentaren darf jedoch gerne ein Hinweis hinterlassen werden ;-)

Nachdem die TYPO3-Dateien am Server sind, wird die Datei remove.pl erstellt. Die Datei hat folgenden Inhalt:

#!/usr/bin/perl --

use strict;
use CGI::Carp qw(fatalsToBrowser);
use File::Path;

my $Ergebnis = rmtree("typo3_src");

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
if($Ergebnis == 1) {
  print "Verzeichnis gel&ouml;scht!";
}
else {
 print "$!";
}
print "</body></html>\n";
Symlink mit Perl entfernen

Das Skript macht nichts anderes, als den Symlink typo3_src zu entfernen. Wichtig ist dabei die erste Zeile. Diese verweist auf den Perl-Interpreter am Server. Das heisst, von Server zu Server kann dieser Pfad variieren. Nachdem der Symlink nun gelöscht ist, wird dieser mit folgender Datei (symlink.pl) neu erstellt - mit Verweis auf den neuen TYPO3-Sourcecode.

#!/usr/bin/perl --

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $Ergebnis = symlink("typo3source/typo3_src-4.5.2","typo3_src");

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
if($Ergebnis == 1) {
  print "Symlink angelegt!";
}
else {
 print "Error: $!";
}
print "</body></html>\n";
Symlink mit Perl neu erstellen

Mit diesen zwei Perl-Skripts kann somit auf den Komfort von Symlinks bei der Durchführung von TYPO3-Updates zurückgegriffen werden. Damit ist es uns auch möglich, bei unseren TYPO3-Kundenprojekten schnell und effizient Updates einspielen zu können.

Vorschläge zur Verbesserung dieser Lösungen können gerne in den Kommentaren gepostet werden!

Diesen Artikel teilen

Schreiben Sie den ersten Kommentar zu diesem Artikel

Ihr Kommentar

Bitte geben Sie Ihren Namen an
Bitte geben Sie eine E-Mail Adresse an
Bitte geben Sie eine Nachricht ein
Das Ergebnis ist nicht korrekt