PHP Download script läuft 100% auf localhost aber nicht im Server, warum?

A

alex1000

Mitglied
Thread Starter
Dabei seit
17.08.2015
Beiträge
31
Reaktionspunkte
0
Hallo community. Bitte ignorieren Sie die deutschen Schreibfehler, Deutsch ist nicht meine Sprache.
Nur zu meiner Frage mit der Hoffnung, jemand hilft.
Der einfache php Code:

Code:
$file = 'logo.zip';

if (file_exists($file)) {

  header('Content-Description: File Transfer');

  header('Content-Type: application/octet-stream');

  header('Content-Disposition: attachment; filename="'.basename($file).'"');

  header('Expires: 0');

  header('Cache-Control: must-revalidate');

  header('Pragma: public');

  header('Content-Length: ' . filesize($file));

  readfile($file);

  exit;

}

Dieser Code stamm aus http://php.net/manual/de/function.readfile.php
Der Code öffnet ohne Problem den Download dialog Box wenn er auf localhost aufgeführt wird,
einmal auf dem richtigem Server schreibt er nur noch eine unverständliche Sprache anstatt seine Arbeit zu machen (PKy�F�1�+$,…..).
Die ZIP Datei & die php Seite befinden sich alle auf dem Hauptverzeichnis. PHP 5.3 auf hosteurope Server.
Woran liegt das? Ist der Script das Problem oder der Server? Oder vielleicht irgendwelche Einstellungen auf der Serverseite?

Danke in Voraus.
 
Kannst du uns vielleicht mal die URL zum Script bei Hosteurope geben?
 
Das kann an einem fehlerhaft konfigurierten Server liegen der dem Browser kommuniziert die Datei als Text darzustellen, das gibts häufiger mal.
 
Die URL? Wenn das hilft, warum denn nicht... und danke für deine Zeit muxli
http://mietmania.de/dload.php
 
Das kann an einem fehlerhaft konfigurierten Server liegen der dem Browser kommuniziert die Datei als Text darzustellen, das gibts häufiger mal.
Und was kann ich da machen? Ich bin nur gehostet
 
Der Code öffnet ohne Problem den Download dialog Box wenn er auf localhost aufgeführt wird,
einmal auf dem richtigem Server schreibt er nur noch eine unverständliche Sprache anstatt seine Arbeit zu machen (PKy�F�1�+$,…..).

der liefert halt den inhalt der zip aus…
 
Wie oneOeight schon gesagt hat, liefert der Code den Inhalt der ZIP Datei aus... aber eben nicht nur und deshalb funktioniert es nicht. Ist das was du uns gepostet hast, tatsächlich der einzige Code in der PHP Datei?

curl -s -D - http://mietmania.de/dload.php -o /dev/null
HTTP/1.1 200 OK
Date: Mon, 17 Aug 2015 16:56:07 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Server: Apache

Es werden also deine Header überhaupt nicht gesendet und vor dem Code der ZIP-Datei schickt der Server diverse HTML-Tags.
 
  • Gefällt mir
Reaktionen: alex1000
Ist das was du uns gepostet hast, tatsächlich der einzige Code in der PHP Datei?
Ja!
Die php Seite enthält keinen weiteren php script außer den, den ich hier gepostet habe.
 
Zuletzt bearbeitet:
Möglicherweise habe ich die Frage falsch verstanden, die Seite enthält auch html code, hier die komplette Seite:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<?php
$file = 'logo.zip';

if (file_exists($file)) {
  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename="'.basename($file).'"');
  header('Expires: 0');
  header('Cache-Control: must-revalidate');
  header('Pragma: public');
  header('Content-Length: ' . filesize($file));
  readfile($file);
  exit;
}
?>

</body>
</html>
 
Zuletzt bearbeitet von einem Moderator:
GELÖST!!
Nuxli, du bist der Beste.
Gerade eine ähnliche Seite erstellt, Alle htm weg genommen und es klappt.
 
Zuletzt bearbeitet:
Ich schäme mich bei sowas, aber es ist mir vorher nie passiert, daher kann ich nur dankbar sein, etwas neues gelernt zu haben. Headers funktionieren etwas wie Session bzw. müssen zuerst gesendet werden. Keine Ahnung warum den localhost solche Regeln nicht folgt, damit denkt man sofort, dass den hosting Server die Verantwortung trägt.

An alle Danke für die Zeit und die Mühe. :)
 
also du solltest im body vielleicht keine header mehr senden ;)
 
also du solltest im body vielleicht keine header mehr senden ;)

Hätte mir sofort geholfen wenn du dies beim ersten Mal genau so formuliert hättest...
Aber ich gehe davon aus, dir fehlte die Information, dass die php Datei auch noch in sich html Code hatte.
Grüß
 
Zuletzt bearbeitet:
Vielleicht. Sieht sehr schön aus.
 
Zurück
Oben Unten