PHP.ini .::. upload_max_filesize .::. Die Sperre für große Dateien
Das Bearbeiten von großen Dateien kann auch für Besitzer eines Rootservers oder eines VServers zur Herausforderung werden. Zwar hat man im Gegensatz zu den meisten Webhosting-Paketen die volle Kontrolle über die Einstellungen, was PHP machen darf und was nicht, aber der Server hat ungeplanterweise oft dann doch das letzte Wort und zwar auch dann, wenn man meint, alles so konfiguriert zu haben, wie man es braucht.
Dazu ein praktisches Beispiel: nehmen wir an, eine Datei soll hochgeladen werden und dann weiterverarbeitet. Denkbar wäre die ffmpeg-Funktion, um ein Video in ein neues Format zu bringen. Dazu braucht es zuerst ein Formular, um die Datei hochladen zu können und dann muss die Datei mit der Funktion entsprechend bearbeitet werden.
Nun kann genau dann ein Fall eintreten, wo man scheitert. Der erste Ansatz, wenn die Datei nicht verarbeitet und am Server gespeichert wird, ist jener, dass die Datei für das Hochladen zu groß ist. Hier gibt es die Einstellung post_max_size, die wir bereits besprochen haben. Angegenommen, das Video ist 80 MB groß und angenommen, der Server ist groß und leistungsstark genug, kann eine Einstellung von 128M Abhilfe schaffen.
Damit hat man aber noch nicht gewonnen, denn der Server hat weitere Pfeile im Köcher. Mit post_max_size haben wir das Hochladen der großen Videodatei ermöglicht, aber gespeichert wird sie auf den Server noch lange nicht. Ob nun mit ffmpeg das Format geändert wird, ob das Format des Videos überhaupt passt oder ob die Funktion ihren Dienst verweigert, spielt keine Rolle.
Es gibt nämlich noch eine Fall, über die viele stolpern. Das ist dann der Fall, wenn der Wert von upload_max_filesize nicht passt. Der ist standardmäßig auf 2M also 2 Megabyte eingestellt und dann kann man sein 80 MB großes Video 30mal hochladen, es wird nicht auf dem Server gespeichert werden, weil der Server aufgrund der Einstellung in der php.ini "njet" sagt. Erst wenn wir diesen Wert erhöhen, wird das Speichern auch gelingen.
Umgekehrt kann man die Funktion natürlich als Sicherheitslimit nützen, um zu vermeiden, dass Leute riesengroße Dateien auf das System laden und dieses damit lahmlegen und genauso ist die Einstellung auch gedacht.