Ich habe alle möglichen Optionen überprüft:
- HTTP-Auth ein- und ausgeschaltet: keine Änderung
- .htaccess im AutoBackup-Ordner deaktiviert: keine Änderung
Meine PHP-Einstellungen:
max_execution_time = 270
memory_limit = 200M
Klick auf "SQL-Backup starten", Ausgabe von HttpFox:
00:00:06.086 0.801 310 0 GET (Error) NS_ERROR_UNKNOWN_HOST http://www.ippages.com/simple/
00:00:06.477 0.604 569 317 GET 200 application/octet-stream (NS_ERROR_UNEXPECTED) http://xxx/system/modules/BackupDB/BackupDbRun.php
Eintrag 2 hat dabei folgende Daten:
(Request-Zeile) GET /system/modules/BackupDB/BackupDbRun.php HTTP/1.1
Host xxx
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding gzip, deflate
Connection keep-alive
Referer http://xxxx/contao/main.php?do=BackupDB
Cookie PHPSESSID=xxx; BE_USER_AUTH=xxx
Authorization Basic ZHNiYWRtxxx==
(Status-Zeile) HTTP/1.1 200 OK
Date Mon, 17 Jun 2013 12:04:37 GMT
Server Apache/2.2.22
X-Powered-By PHP/5.4.9
Pragma public
Expires 0
Cache-Control must-revalidate, post-check=0, pre-check=0, private
Content-Disposition attachment; filename=Database_db107305_38_2013-06-17_140437.sql
content-transfer-encoding binary
Set-Cookie BE_USER_AUTH=xxx; expires=Wed, 19-Jun-2013 12:04:37 GMT; path=/; httponly
Connection close
Transfer-Encoding chunked
Content-Type application/octet-stream
Wenn ich http://xxx/system/modules/BackupDB/BackupDbRun.php direkt aufrufe, kann ich die sql-Datei herunterladen. Über das Backend geht es nicht. Aber eben auch ungezippt.
Getestet mit FF 12.0
Mit Opera 12.15 funktioniert alles einwandfrei.
Mit IE 10 ist auch alles super.
Bei beiden Browsern aber auch nicht als ZIP.
Das Problem kommt mir bekannt vor. Ich hatte es vor Jahren bei einem Projekt, wo wir Downloads bereitstellten. Damals meldeten sich auch Benutzer einiger Browser, die nicht auf unsere Dateien zugreifen konnten. Hier mal der Code von damals:
Code:
if (!@file_exists ($filelang))
{
# ggf. Inhalt einer Zip-Datei herunterladen
$zipfile = substr($filelang, 0, strlen($filelang) - strlen($basename)-1);
include "zipexcp.lib.php";
# BUG: besser temporaerer Dateiname
$filelang = $tmppfad.$basename.".zip";
zipexcp::export ($zipfile, $filelang, array($basename));
$downloadname = substr(basename($zipfile), 0, -4).'_'.$basename.'.zip';
# print $downloadname;
$unlink_filelang = 1;
} else {
# normale Datei
$downloadname = $basename;
}
$len = filesize($filelang);
Header('Content-Type: application/octet-stream');
if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE")>0) {
// IE versteht Content-Disposition nicht richtig, sh. auch http://de.php.net/header
// http://www.selfphp.info/praxisbuch/praxisbuchseite.php?site=347&group=68
// http://www.php-faq.de/q/q-datei-download.html
header("Content-Disposition: filename=$downloadname");
}
else {
header("Content-Disposition: attachment; filename=\"$downloadname\"");
}
Header('Content-Transfer-Encoding: Binary');
Header("Content-Length: ".$len);
Header("Content-Description: DWZ-Transfer");
$fp=fopen($filelang,"rb");
while(!feof($fp)) {
set_time_limit(30);
$buffer = fread($fp,1024);
echo $buffer;
}
fclose($fp);
Funktioniert hat es trotzdem nicht. Seitdem erstelle ich den Download in einem temporären Ordner und zeige den Link dorthin dem Besucher im Browser an. Das "Streaming" funktionierte halt nicht überall. Hängt vielleicht auch von den Servereinstellungen ab. Wir haben einen Server bei domainfactory.
Lesezeichen