Dateien mit Safari hochladen und PHP

Wer PHP-Seiten erstellt und dort eventuell auch mal das Hochladen von Dateien zulassen möchte, erlebt unter bestimmten Umständen (die sich mir bisher noch nicht ganz erschließen), dass Safari (alle Versionen) dies nicht mehr zulässt. Er lädt und lädt, aber nichts passiert. Wer das feine Programm Little Snitch dabei im Einsatz hat, wird oben im Netzwerkmonitor sehen, dass kein Netzwerkverkehr mehr stattfindet, d.h. Safari befindet sich sozusagen im Leerlauf, obwohl er anzeigt, dass er die Datei hochlädt. Das ganze betrifft übrigens nicht nur PHP, jedes andere System ist davon auch betroffen.

Was also tun? Die Lösung ist geradezu banal! Als erste Zeile in der PHP-Seite einfach folgenden Schnipsel einfügen:

<?php header("Connection: close"); ?>

Das war’s schon. Zitat aus den header-Docs:

HTTP/1.1 defines the „close“ connection option for the sender to signal that the connection will be closed after completion of the response. For example,

Connection: close
in either the request or the response header fields indicates that the connection SHOULD NOT be considered `persistent‘ (section 8.1) after the current request/response is complete.

HTTP/1.1 applications that do not support persistent connections MUST include the „close“ connection option in every message.

2 Replies to “Dateien mit Safari hochladen und PHP”

  1. Seit drei Jahren suche ich (in unregelmäßigen Abständen) nach einer Lösung für dieses Problem. Entweder hatte ich heute besonderes Glück oder ich habe vorher nicht richtig gesucht.

    Die Lösung mit dem Header ist einfach super. Allerdings habe ich noch eine Zusatzinfo:

    Es sieht so aus, als müsste die Seite, auf der das Formular ABGESCHICKT wird, mit dem Header ausgestattet sein, die „empfangende“ Seite darf diesen Header keinesfalls haben.

    Bei mir wird das Formular zum gleichen PHP-Script geschickt, das heißt, ich prüfe mit folgender Zeile, ob der Header gesendet werden soll:

    if ( !isset( $_POST[„upload“] ) ) header(„Connection: close“);

    Klappt super und endlich, endlich ist dieses alte Problem gelöst – danke!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.