Datei-Upload unter IIS in Verbindung mit PHP

Nach den ersten Gehversuchen mit TYPOlight unter Windows läuft das System nun stabil und flott (mit ein paar Einschränkungen). Nach dem der Kundenbereich erstellt wurde, sollte auch eine Uploadmöglichkeit her. Also schnell ein Formular mit Upload-Möglichkeit angelegt und getestet. Theoretisch funktioniert, aber nicht so wirklich. Im Uploadordner landen merkwürdigerweise nur 0kB große Dateien.

Zugriffsberechtigungen überprüft, stimmt alles, also blieb nichts anderes übrig, als zu googln. Der erste Hinweis kam, dass in der PHP.ini ein Temp-Ordner für Uploads definiert ist, auf den der IIS-Benutzer aber keine Schreibrechte hat (c:\Windows\Temp). Also in der PHP.ini den Ordner auf c:\Upload-Temp geändert und dem IIS-Benutzer auf diesen Ordner volle Rechte vergeben. Zwecklos. Es landen weiterhin 0kB Dateien im Zierordner. Auch ein Neustart brachte keine Besserung.

Nach mehreren Stunden Recherche im Internet kam der entscheidende Hinweis, dass der Temp Ordner unbedingt innerhalb des Root-Verzeichnisses der aufrufenden Homepage liegen muss, sonst kann IIS in Verbindung mit PHP keine temporären Daten in diesen schreiben.

Die Änderung der PHP.ini-Datei führte nun zum gewünschten Ergebnis. Der Upload funktioniert nun einwandfrei.

4 Responses to “Datei-Upload unter IIS in Verbindung mit PHP”

  1. Wie viele Jahre hat dieses blog schon online?

  2. WebDucer sagt:

    Dieser Blog ist seit August 2009 online.

  3. Vendy sagt:

    Wenn der Temp Ordner innerhalb der Root-Verzeichnisses ist, besteht doch die Gefahr, dass mann die Datei direkt per Browser holen kann oder nicht? Die Datei ist sozusagen erreichbar.

  4. WebDucer sagt:

    Das ist richtig. Lässt sich aber leider unter IIS meines Wissens nach momentan nicht anders lösen. Nach dem Upload wird die temporäre Datei aber gelöscht. Eine Apache-Konfiguration in Verbindung mit PHP ist immer noch sicherer, aber leider nicht immer möglich. Es bleibt zu hoffen, dass sich dieser Umstand spätestens mit Visual Studio 2010, das ja PHP unterstützen wird, und MS Server 2008 R2 beseitigt sein wird. Vielleicht wird dies erst aber mit der PHP Version 6 gelöst sein. Es bleibt nur zu hoffen und zu warten.

Leave a Response