Hallo auch,
aktuell habe ich ein Problem mit move_uploaded_file(). Ich möchte ein array von hochgeladenen Files verarbeiten. Dabei erhalte ich jedoch für jede der Dateien eine PHP Warning "Operation not permitted". Was mich wundert, ist, das die hochgeladenen Files dabei im Zielverzeichnis mir korrekten Berechtigungen angelegt werden. Im Temp sind demporären Datein hiernach auch verschwunden. Etwas gekürzt sieht man Code wie folgt aus:
move_uploaded_file ist immer true bzw. 1. Die Fehlermeldung $errmsg wird also nie befüllt. Am Zielort "$folder/$name" finde ich wie erwartet meine hochgeladenen Datei mit dem User www-data:www-data und den Rechten 0644. Im PHP errorlog finde ich dennoch für jeden Upload den Eintrag Operation not permitted.
Als Server arbeitet nginx und php-fpm unter Debian 9 auf einem Raspberry Pi. Setze ich vor move_uploaded_fileein @, werden die Meldungen im PHP Errrorlog unterdrückt. Provoziere ich hingegen einen Fehler in dem ich zum Beispiel den owner von $folder ändere, wird move_uploaded_file auf false gesetzt und $errmsg enthält die entsprechende Meldung.
Kann mir jemand erklären warum ich ohne @ die Warnung erhalte? Achja PHP Temp = System Temp und liegt auf /tmp. /tmp liegt in einer Ramdisk mit den Rechten 0777.
aktuell habe ich ein Problem mit move_uploaded_file(). Ich möchte ein array von hochgeladenen Files verarbeiten. Dabei erhalte ich jedoch für jede der Dateien eine PHP Warning "Operation not permitted". Was mich wundert, ist, das die hochgeladenen Files dabei im Zielverzeichnis mir korrekten Berechtigungen angelegt werden. Im Temp sind demporären Datein hiernach auch verschwunden. Etwas gekürzt sieht man Code wie folgt aus:
Code:
if(isset($_FILES['imagefiles'])) { foreach($_FILES['imagefiles']['error'] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES['imagefiles']['tmp_name'][$key]; $name = basename($_FILES["imagefiles"]["name"][$key]); if(!move_uploaded_file($tmp_name, "$folder/$name")) { $errmsg = 'Upload of "'.$folder."/".$name.'" failed. Please check permissions.'; } } } }
Als Server arbeitet nginx und php-fpm unter Debian 9 auf einem Raspberry Pi. Setze ich vor move_uploaded_fileein @, werden die Meldungen im PHP Errrorlog unterdrückt. Provoziere ich hingegen einen Fehler in dem ich zum Beispiel den owner von $folder ändere, wird move_uploaded_file auf false gesetzt und $errmsg enthält die entsprechende Meldung.
Kann mir jemand erklären warum ich ohne @ die Warnung erhalte? Achja PHP Temp = System Temp und liegt auf /tmp. /tmp liegt in einer Ramdisk mit den Rechten 0777.
Kommentar