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-UpdatesIn 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öscht!";
}
else {
print "$!";
}
print "</body></html>\n";
Symlink mit Perl entfernenDas 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 erstellenMit 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!


