Hallo,
Ich habe in meiner Typo3 Version 4.1 bei jweiland DAM und dam_downloads installiert.
Bei meiner lokalen Typo3 Installation hat es Funktioniert, aber wenn ich hier eine Auswahl als zip herunterladen möchte, bekomme ich folgende Fehlermeldung:
Warning: main(/t3lib/class.t3lib_div.php🙁 failed to open stream: No such file or directory in /kunden/164780_70794/rp-hosting/5133/6133/typo3cms/projekt1/typo3conf/ext/dam_downloads/zipit.php on line 196
Warning: main(/t3lib/class.t3lib_div.php🙁 failed to open stream: No such file or directory in /kunden/164780_70794/rp-hosting/5133/6133/typo3cms/projekt1/typo3conf/ext/dam_downloads/zipit.php on line 196
Fatal error: main(🙁 Failed opening required '/t3lib/class.t3lib_div.php' (include_path='.:/usr/local/lib/php') in /kunden/164780_70794/rp-hosting/5133/6133/typo3cms/projekt1/typo3conf/ext/dam_downloads/zipit.php on line 196
Kann der Grund beim Provider liegen, oder an einer Einstellung im Installtool, weil, wie gesagt, bei der gleichen Konfiguration der download bei meiner lokalen Typo3 Installation 4.0.4 funktioniert hat?
Für jeden Hinweis wäre ich sehr dankbar.
Viele Grüße
Corinna
Das kann mit der Serverkonfiguration zusammenhängen.
Versuche mal Zeile 196 in zipit.php auszutauschen gegen:
define('PATH_thisScript',str_replace('/typo3conf/ext/dam_downloads/zipit.php','',str_replace('//','/', str_replace('\\','/', php_sapi_name()=='cgi'||php_sapi_name()=='isapi' ? $_SERVER['PATH_TRANSLATED']:$_SERVER['SCRIPT_FILENAME']))));
Dann sollte der Pfad zur class.t3lib_div.php richtig erkannt werden.
In Zeile 196 steht direkt nichts drin. Das sieht so aus:
...
185 $cdrec .= pack("V", $this -> old_offset ); //relative offset of local header
186
187 $this -> old_offset = $new_offset;
188
189
190
191 $cdrec .= $name;
192
193 // optional extra field, file comment goes here
194
195 // save to array
196
197 $this -> ctrl_dir[] = $cdrec;
198
...
Wenn ich Zeile 197 austausche, bekomme ich die Fehlermeldung:
Parse error: parse error, unexpected T_STRING in /kunden/164780_70794/rp-hosting/5133/6133/typo3cms/projekt1/typo3conf/ext/dam_downloads/zipit.php on line 197
Ist immerhin jetzt nur noch eine Fehlermeldung.
Es gibt übrigens eine sehr ähnliche Zeile in zipit.php:
381 if($_GET['files']) {
382
384
385define('PATH_thisScript',str_replace('/typo3conf/ext/dam_downloads/zipit.php','',str_replace('//','/', 386str_replace('\\','/', php_sapi_name()=='cgi'||php_sapi_name()=='isapi' ? 387$HTTP_SERVER_VARS['PATH_TRANSLATED']:$HTTP_SERVER_VARS['SCRIPT_FILENAME']))));
388
389 define('PATH_site', PATH_thisScript.'/');
390
391 define('PATH_t3lib', PATH_site.'t3lib/');
392
393 require(PATH_t3lib.'class.t3lib_div.php');
394
395 $zipfile = new zipfile();
...
Auf jeden Fall Vielen Dank schon mal für die schnelle Antwort, vielleicht
fällt Dir ja nochwas dazu ein.
Liebe Grüße
Corinna
Dann hast du eine andere Version der zipit.php
Ändere einfach alle Vorkommen von $HTTP_SERVER_VARS zu $_SERVER.
Und stelle die ursprüngliche Zeile 197 wieder her 😉
O.K. getan.
Jetzt bekomme ich die Fehlermeldung:
Warning: main(/t3lib/class.t3lib_div.php): failed to open stream: No such file or directory in /kunden/164780_70794/rp-hosting/5133/6133/typo3cms/projekt1/typo3conf/ext/dam_downloads/zipit.php on line 391
Warning: main(/t3lib/class.t3lib_div.php): failed to open stream: No such file or directory in /kunden/164780_70794/rp-hosting/5133/6133/typo3cms/projekt1/typo3conf/ext/dam_downloads/zipit.php on line 391
Fatal error: main(): Failed opening required '/t3lib/class.t3lib_div.php' (include_path='.:/usr/local/lib/php') in /kunden/164780_70794/rp-hosting/5133/6133/typo3cms/projekt1/typo3conf/ext/dam_downloads/zipit.php on line 391
und in Zeile 391 in zipit.php steht:
...
379if($_GET['files']) {
380 381define('PATH_thisScript',str_replace('/typo3conf/ext/dam_downloads/zipit.php','',str_replace('//','/', 382str_replace('\\','/', php_sapi_name()=='cgi'||php_sapi_name()=='isapi' ? 383$_SERVER['PATH_TRANSLATED']:$_SERVER['SCRIPT_FILENAME']))));
384
385 define('PATH_site', PATH_thisScript.'/');
386
387 define('PATH_t3lib', PATH_site.'t3lib/');
388
389
390
391 require(PATH_t3lib.'class.t3lib_div.php');
392
...
Die Datei class.t3lib_div.php ist aber im Ordner /t3lib/ vorhanden.
Also der gleiche Fehler wie vorher.
Versuche dann mal per phpinfo() herauszufinden,
welche globalen Servervariablen überhaupt gesetzt sind,
und passe das Script dann an.
Irgendwo muß der Pfad zu t3lib ja drin stehen.
In phpinfo() steht zum Beispiel dies:
TYPO3_DOCUMENT_ROOT : /www/123456_12345/rp-hosting/1234/1234/typo3cms/projekt1
Ich hab das mal in der zipit.php der Datei class.t3lib_div.php als Pfad vorangestellt, was zur Folge hatte, dass ich keine Fehlermeldung mehr bekam. Aber auch keinen Download. Nur ein leeres Browser-Fenster und
in der Adress-Zeile stand:
www.meineSeite.de/typo3conf/ext/dam_downloads/zipit.php?filename=test.zip&directoryName=test/&files=fileadmin%2FBilder%2FBl%C3%BCte01.jpg
Die Adress-Zeile sieht doch irgendwie ganz vielversprechend aus. Müßte aber eher so aussehen:
//localhost/typo3wamp/index.php?id=3&no_cache=1&tx_damdownloads_pi1[save]=14
Kann das Problem eigentlich auch damit zusammenhängen, das bei mir register_globals=off eingestellt ist?
Liebe Grüße
Corinna
Weitere Unterschiede in phpinfo() zwischen meiner lokalen Installation,
(bei der der Download funktioniert) und meiner Typo3-Installation bei
jweiland:
lokal: typo3-version 4.04, php-version 5.05
Registered PHP Streams: php, file, http, ftp, compress.zlib, https, ftps
online: typo3-version 4.1, php-version 4.4.1
Registered PHP Streams: php, http, ftp, compress.bzip2, compress.zlib
sitze am selben Problem PATH_TRANSLATED existiert in PHP 5 nicht mehr - trotzdem bringt er mir ein leeres Zip-Ergebnis. Ich vermute als Übeltäter die getFileAbsFileName - funktion, die liefert bei mir nämlich ein schlichtes "/" zurück....
Hat da jemand eine Lösung ?
So - nach einigem "Rumgewühle" im PHP-Code von zipit.php hab ich das Skript zum Laufen gebracht:
die korrekte Zeile 197f lautet :
define('PATH_thisScript',str_replace('typo3conf/ext/dam_downloads/zipit.php','',str_replace('//','/', str_replace('\\','/', php_sapi_name()=='cgi'||php_sapi_name()=='isapi' ? $_SERVER['SCRIPT_FILENAME']:$_SERVER['SCRIPT_FILENAME']))));
Das ganze ist aber relativ nutzlos, da mir die in der class.t3lib_div aufgerufene Funktion getAbs... keinerlei Output zurücklieferte. Deshalb habe ich das Bilder-Array einfach so erzeugt :
if (strpos($filepath,'fileadmin/') !== false) {
$picsArray[] = PATH_thisScript.$filepath;
}
Ich hänge also einfach die Konstante PATH_thisScript vor den Filepath.
Vorsicht ist bei dieser Lösung geboten : Man umgeht damit die Sicherheitsabfragen eben genau dieser t3lib_div-Funktion. Da dieses Skript nur nach dem Login in unseren internen Bereich zum Einsatz kommt, sehe ich das Risiko aber als relativ gering an.
Falls jemand eine alternativlösung für die t3lib_div Funktion hat, bitte posten 😉...