Hello,
[...] Script für die Auslieferung. Dieses Script muss dann im Prinzip _sehr_ komplex sein, denn es müsste auch "chunked", "compressed" und "last modified" unterstützen.
Worin genau siehst du diesen Zwang begründet? Abgesehen davon, dass man HTTP 1.0 verwenden könnte, sind die genannte Dinge keine Pflichtveranstaltung.
WEnn man die Vor- und Nachteile unterschiedlicher Speichertechniken vergleicht, sollte man doch auch ihre Nebenwirkungen erwähnen, oder? Und für die Vergangenheit planen und entwickeln wir doch nur noch selten (ich lebe davon von zu Zeit noch). Da sollte man dann also die 1.1-Methoden nicht unterschlagen...
move_uploaded_file() & Co. sind antiquiert. Bei Verwendung des (neuen) superglobalen Arrays $_FILES gibt es andere Möglichkeiten um festzustellen, ob das File hochgeladen wurde. Und diese sollten auch benutzt werden!
Wichtig ist die Einstellung eines eigenen upload_tmp_dir,Das kann man als Anwender nicht unbedingt beeinflussen (php.ini oder httpd.conf müssen änderbar sein). Man kann es zumindest über phpinfo() kontrollieren. Wenn das auf /tmp oder ein anderes gemeinsames Verzeichnis zeigt, wüsste ich grad nicht, wie einem das Ignorieren von *_uploaded_file() weiterhilft.
Das haben wir neulich schon etwas ausführlicher diskutiert. *_uploaded_file() stellt überhaupt nicht fest, ob das File seit dem Upload verändert wurde, sondern nur, ob es hochgeladen wurde. Und das ist nutzlos. Das kann man auch mit $_FILES feststellen.
Wichtig ist, dass das File am Temporärort nicht erreichbar und nicht veränderbar ist durch Dritte. Das ist einer der empfindlichsten Punkte. Dazu darf man dann aber upload_tmp_dir auch KEINESFALLS in seine Dokument Root verlegen und für HTTP/s erreichbar machen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg