So geht's: Ich habe auch dasselbe Problem, möchte aber auf Symlinks nicht verzichten. Also hab ich mir eine PHP-Shell gezogen und die mit hochgeladen. Die gab's früher mal hier, weiß aber nicht, wo die jetzt hin ist. Wenn sie jemand braucht, kann ich sie ihm schicken...
In der PHP-Shell kann man den 'tar'-Befehl direkt reinhacken:
tar xzf typo3_src-4.0.tar.gz
Alternativ kann man sich auch ein eigenes PHP-Script schreiben, dass die Archive entpackt:
<?php
exec("tar xzf typo3_src-4.0.tar.gz");
?>
oder mit Kontrolle:
<?php
if (exec("tar xzf typo3_src-4.0.tar.gz")) {
echo("OK<br />");
} else {
echo("ERROR<br />");
}
?>
Wie man sieht, darf die PHP-Funktion 'exec()' nicht gesperrt sein. Das gilt auch für die PHPShell.
Wenn es dabei Probleme beim Schreiben gibt, einfach mal dem übergeordneten volle Rechte (CHMOD 777) geben und hinterher wieder entziehen.
Das Dumme dabei ist jedenfalls, dass die PHPShell die Befehle als PHP ausführt. Und PHP läuft in der Regel als Benutzer des Webservers, also "www", "wwwrun" oder "nobody" etc. Die Archive werden zwar richtig entpackt, haben aber den falschen Nutzer. Das muss man im Nachgang mit der PHPShell korrigieren:
chown -R <user>:<group> typo3_src-4.0
... wobei <user> und <group> jeweils der eigene Benutzername und das Passwort (gleiche Daten wie für FTP) sind. Das geht aber auf manchen Webservern aber nicht, weil der Benutzer des Webservers nicht berechtigt ist, 'chown' auszuführen. Bei der PHP-Funktion 'chown()' braucht man sich auch keine Hoffnungen zu machen, weil die nur mit Superrechten ausgeführt wird.
Also ohne SSH-Zugang und ohne 'exec()' wird es kaum gehen. Ich hab das noch mit Python anstatt PHP versucht, aber die entpackten Daten hatten auch den Benutzer des Webservers angenommen.
Das heißt, wenn man kein 'chown' machen darf, bleiben die Daten Eigentum des Webservers. TYPO3 wird trotzdem funktionieren. Das FTP-Programm kann dann in den meisten Fällen die Daten plötzlich nicht mehr löschen oder überschreiben. Das müsste man dann alles in ziemlicher Handarbeit über die PHPShell oder PHP machen. Oder aber einfach mal ne Mail an den Provider schicken, damit der die entpackten Daten auf den korrekten Benutzer setzt.