$_FILE wirft UPLOAD_ERR_INI_SIZE Fehlermeldung

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von SystemException.

    $_FILE wirft UPLOAD_ERR_INI_SIZE Fehlermeldung

    Hey zusammen,

    habe mal aus persönlichem Interesse eine Art File-Share Server programmiert.
    Was mir dabei aufgefallen ist, ist Folgendes:
    Ich habe in der php.ini Datei eine bestimmte Größe bei upload_max_filesize und post_max_size festgelegt
    (zB: 8M = 8 Megabyte). Diese Änderungen werden auch auf meiner phpinfo();-Seite angezeigt. Trotzdem wirft mir der Upload
    bei manchen Dateien unter der festgelegten Größe den FileError mit der Value 1 (= UPLOAD_ERR_INI_SIZE).

    Hier mal eine Seite, die die Fehler gut erklärt: Klicke hier
    Alle anderen Dateien funktionieren reibungslos.
    Ich habe bereits Apache2 neugestartet, wodurch bei mir die Änderungen überhaupt erst übernommen wurden.
    Am Anfang zmdst. Mittlerweile nimmt er die Änderungen sofort. Das ist halt auch irgendwie "komisch"....

    Zur Info: Ich nutze Debian Jessie (8 minimal) mit php5 und apache2.
    Hier zu meiner Seite: Klicke hier

    Vielen Dank für jede Hilfe! :)

    Mfg, David
    Bitte benutze OPTION STRICT ON.
    Und optional OPTION EXPLICIT ON.
    Hier ein CODE-CONVERTER.

    Suchanfragen-Ansatz für GOOGLE.
    Prüfe deinen Beitrag in einer RECHTSCHREIBPRÜFUNG.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SystemException“ ()

    Danke für den Hinweis, werde ich mir merken und mal updaten :)
    Also habe aktuell mal die Upload-Begrenzungen etwas sehr hoch gestellt (Ausschnitt aus phpinfo();)

    Quellcode

    1. post_max_size: 100000MB
    2. upload_max_filesize: 100000MB

    Und die Datei, die ich da versuche hochzuladen hat folgende Größe:
    8,97 KB (9.190 Bytes)
    bzw: 12,0 KB (12.288 Bytes)
    Name: cooltext292918104848232.png

    So, mit der "extremen" Einstellung funktioniert das Ganze auch. Sobald ich aber diese Values wieder etwas runterschraube (zB auf 20MB) kommt es immer mal wieder
    zu diesem FileError..
    Weiß da wer weiter oder hängts an mir?

    LG
    Bitte benutze OPTION STRICT ON.
    Und optional OPTION EXPLICIT ON.
    Hier ein CODE-CONVERTER.

    Suchanfragen-Ansatz für GOOGLE.
    Prüfe deinen Beitrag in einer RECHTSCHREIBPRÜFUNG.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SystemException“ ()

    Hast du in der INI Datei 20M stehen oder 20MB ?
    Denn wenn du 20MB stehen hast nimmt er Bytes deshalb klappt dann 100000MB auch.

    Bitte mal nachschauen wie genau das Zeug in deiner php.ini steht. Es MUSS 20M sein nicht 20MB
    siehe: de2.php.net/manual/en/faq.using.php#faq.using.shorthandbytes
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Hey,

    also ich hatte 100000MB da stehen. Habe da jetzt mal 20M draus gemacht.
    Meine Datei, welche ich hochladen wollte hat die Endung .mp3 und die Größe 4,75 MB (4.991.207 Bytes).

    Hier nochmal das Bild meiner php.ini in nano geöffnet:


    Klappt allerdings net. FileError 1....

    //Edit:
    Eine weitere Datei mit der Größe 107 KB (109.960 Bytes) und der Endung .mp4 funktioniert reibungslos.
    Änderungen wurden definitiv übernommen:



    LG
    Bitte benutze OPTION STRICT ON.
    Und optional OPTION EXPLICIT ON.
    Hier ein CODE-CONVERTER.

    Suchanfragen-Ansatz für GOOGLE.
    Prüfe deinen Beitrag in einer RECHTSCHREIBPRÜFUNG.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „SystemException“ ()

    Meinst du post_max_size?
    Jup hab ich!
    Bitte benutze OPTION STRICT ON.
    Und optional OPTION EXPLICIT ON.
    Hier ein CODE-CONVERTER.

    Suchanfragen-Ansatz für GOOGLE.
    Prüfe deinen Beitrag in einer RECHTSCHREIBPRÜFUNG.

    Könntest du mal in deinem Script oben:

    PHP-Quellcode

    1. error_reporting(E_ALL);


    setzen und dann mal die genauen Fehlermeldungen raus kopieren und posten?
    Evtl. steckt der Teufel ja im Detail und es hat gar nichts mehr mit der filesize an sich zu tun.
    Evtl. auch den Quellcode zur Upload.php ? Wenn das keine Umstände macht vielleicht ist auch da irgendwo der Fehler drin.

    Ist dein MAX_FILE_SIZE Feld im HTML Formular auch richtig eingestellt?
    Ich weiß jetzt nicht was da rein gehört(also bytes/megabytes), aber nehme das mal test weise raus und versuche es nur mit der PHP
    Begrenzung denn das im HTML Formular ist ja eh nur Clientside.

    Und dein Apache hast du neugestartet nach den Änderungen?
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Hay,

    1) error_reporting(E_ALL); hab ich versucht. Er bringt einfach ne Blank Page ohne Fehlermeldung ?(
    2) Quellcode zur upload.php:
    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. require 'mysqli.php';
    3. $limit = 15;
    4. $ip = md5($_SERVER['REMOTE_ADDR']);
    5. $counter = 0;
    6. $sql = "SELECT * FROM contents WHERE created_by='$ip' AND blocked='0'";
    7. foreach ($mysqli->query($sql) as $row) {
    8. $counter++;
    9. }
    10. if($counter < $limit) {
    11. if (isset($_POST['submit'])) {
    12. $file = $_FILES['file'];
    13. $fileName = $_FILES['file']['name'];
    14. $fileTmpName = $_FILES['file']['tmp_name'];
    15. $fileSize = $_FILES['file']['size'];
    16. $fileError = $_FILES['file']['error'];
    17. $fileType = $_FILES['file']['type'];
    18. $fileExt = explode('.', $fileName);
    19. $fileActualExt = strtolower(end($fileExt));
    20. $allowed = array('gif', 'exe', 'jar', 'zip', 'rar', 'gz', '7z', '7zip', 'targz', 'zipx', 'mpeg', 'mpe', 'mov', 'mp4', 'wav', 'mp3', 'wma', 'avi', 'ram', 'wmv', 'aac', 'ogg', 'flac', 'rm', 'txt', 'rtf', 'doc', 'docx', 'pdf', 'xls', 'xlsx', 'mdb', 'accdb', 'ppt', 'pptx', 'odt', 'ods', 'odp', 'odg', 'odf', 'bmp', 'jpg', 'jpeg', 'png');
    21. if(in_array($fileActualExt, $allowed)) {
    22. if($fileError === 0) {
    23. if ($filesize < 100000000000) {
    24. //Upload file
    25. $fileNameNew = str_replace(' ', '_', $fileName);
    26. $fileNameNew = str_replace('<', null, $fileNameNew);
    27. $fileNameNew = str_replace('>', null, $fileNameNew);
    28. $fileDestination = 'uploads/'.$fileNameNew;
    29. move_uploaded_file($fileTmpName, $fileDestination);
    30. //Register $url, $id, $ip and $timestamp in database
    31. $url = "https://cdn.nani-games.net/uploads/".$fileNameNew;
    32. $id = uniqid();
    33. $timestamp = date('Y-m-d');
    34. $sql = "INSERT INTO contents (url, id, created_by, time_stamp, blocked) VALUES ('$url','$id','$ip', '$timestamp', '0')";
    35. $mysqli->query($sql);
    36. header('Location: https://cdn.nani-games.net/');
    37. } else {
    38. $sourceURL = 'https://cdn.nani-games.net/error.html';
    39. }
    40. } else {
    41. $sourceURL = 'https://cdn.nani-games.net/error.html';
    42. }
    43. } else {
    44. $sourceURL = 'https://cdn.nani-games.net/error.html';
    45. }
    46. } else {
    47. $sourceURL = 'https://cdn.nani-games.net/error.html';
    48. }
    49. } else {
    50. $sourceURL = 'https://cdn.nani-games.net/error.html';
    51. }
    52. ?>
    53. <center><iframe src=<?php echo $sourceURL; ?> style="border:none;" height="1000" width="1000" ></iframe></center>

    3) MAX_FILE_SIZE

    HTML-Quellcode

    1. <input name="MAX_FILE_SIZE" value="20971520" type="hidden"/> <!-- 20,971,520 Bytes = 20MB -->

    4) Apache Service restarte ich immer nach jeder Änderung! :)
    Bitte benutze OPTION STRICT ON.
    Und optional OPTION EXPLICIT ON.
    Hier ein CODE-CONVERTER.

    Suchanfragen-Ansatz für GOOGLE.
    Prüfe deinen Beitrag in einer RECHTSCHREIBPRÜFUNG.

    Das hier ist falsch:

    PHP-Quellcode

    1. <center><iframe src=<?php echo $sourceURL; ?> style="border:none;" height="1000" width="1000" ></iframe></center>


    Da fehlen Anführungszeichen beim src.:

    PHP-Quellcode

    1. <center><iframe src="<?php echo $sourceURL; ?>" style="border:none;" height="1000" width="1000" ></iframe></center>


    Und dann sehe ich nirgends eine Fehlerausgabe... Was steht denn in:

    PHP-Quellcode

    1. $fileError = $_FILES['file']['error'];


    Und du solltest: secure.php.net/manual/de/mysqli.real-escape-string.php
    nutzen.

    Dann noch kurzer Tipp falls du das wirklich öffentlich nutzen möchtest brauchst du dringend Datenschutz zeug und so weil du speicherst dort(auch wenn gehasht) eine IP.

    Und die Blank Page könnte sein weil nen Iframe drüber läuft. und du sollst natürlich versuchen eine Datei hochzuladen damit du überhaupt mal was siehst dann ^^
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Danke für den Hinweis mit den Anführungszeichen.
    Ja, habe den normalen Code ohne Fehlerausgabe geschickt.
    Die Seite mit dem Error Report sieht einfach so aus (die ich ausprobiert habe, wo dann nur diese Blank Seite raus kam):
    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. error_reporting(E_ALL);
    3. require 'mysqli.php';
    4. $limit = 15;
    5. $ip = md5($_SERVER['REMOTE_ADDR']);
    6. $counter = 0;
    7. $sql = "SELECT * FROM contents WHERE created_by='$ip' AND blocked='0'";
    8. foreach ($mysqli->query($sql) as $row) {
    9. $counter++;
    10. }
    11. if($counter < $limit) {
    12. if (isset($_POST['submit'])) {
    13. $file = $_FILES['file'];
    14. $fileName = $_FILES['file']['name'];
    15. $fileTmpName = $_FILES['file']['tmp_name'];
    16. $fileSize = $_FILES['file']['size'];
    17. $fileError = $_FILES['file']['error'];
    18. $fileType = $_FILES['file']['type'];
    19. $fileExt = explode('.', $fileName);
    20. $fileActualExt = strtolower(end($fileExt));
    21. $allowed = array('gif', 'exe', 'jar', 'zip', 'rar', 'gz', '7z', '7zip', 'targz', 'zipx', 'mpeg', 'mpe', 'mov', 'mp4', 'wav', 'mp3', 'wma', 'avi', 'ram', 'wmv', 'aac', 'ogg', 'flac', 'rm', 'txt', 'rtf', 'doc', 'docx', 'pdf', 'xls', 'xlsx', 'mdb', 'accdb', 'ppt', 'pptx', 'odt', 'ods', 'odp', 'odg', 'odf', 'bmp', 'jpg', 'jpeg', 'png');
    22. if(in_array($fileActualExt, $allowed)) {
    23. if($fileError === 0) {
    24. if ($filesize < 100000000000) {
    25. //Upload file
    26. $fileNameNew = str_replace(' ', '_', $fileName);
    27. $fileNameNew = str_replace('<', null, $fileNameNew);
    28. $fileNameNew = str_replace('>', null, $fileNameNew);
    29. $fileDestination = 'uploads/'.$fileNameNew;
    30. move_uploaded_file($fileTmpName, $fileDestination);
    31. //Register $url, $id, $ip and $timestamp in database
    32. $url = "https://cdn.nani-games.net/uploads/".$fileNameNew;
    33. $id = uniqid();
    34. $timestamp = date('Y-m-d');
    35. $sql = "INSERT INTO contents (url, id, created_by, time_stamp, blocked) VALUES ('$url','$id','$ip', '$timestamp', '0')";
    36. $mysqli->query($sql);
    37. //header('Location: https://cdn.nani-games.net/');
    38. } else {
    39. //$sourceURL = 'https://cdn.nani-games.net/error.html';
    40. }
    41. } else {
    42. //$sourceURL = 'https://cdn.nani-games.net/error.html';
    43. }
    44. } else {
    45. //$sourceURL = 'https://cdn.nani-games.net/error.html';
    46. }
    47. } else {
    48. //$sourceURL = 'https://cdn.nani-games.net/error.html';
    49. }
    50. } else {
    51. //$sourceURL = 'https://cdn.nani-games.net/error.html';
    52. }
    53. ?>
    54. <!-- <center><iframe src="<?php echo $sourceURL; ?>" style="border:none;" height="1000" width="1000" ></iframe></center> -->


    Und du solltest: secure.php.net/manual/de/mysqli.real-escape-string.php

    nutzen.

    Dann noch kurzer Tipp falls du das wirklich öffentlich nutzen möchtest
    brauchst du dringend Datenschutz zeug und so weil du speicherst
    dort(auch wenn gehasht) eine IP.

    Jiu real_escape_strings sind mir geläufig, werd ich einbauen. Danke dir.
    Und das mit dem Datenschutz ist so ne Sache. Ab wann darf ich einen digitalen Fingerabdruck der REMOTE_ADDR speichern?
    Ich meine ich sehe sie als Inhaber ja nicht im Klartext. Muss ich da vorher eine Art EInverständniserklärung der Benutzer einholen mittels Benarichtigung und einem
    "Ich akzeptiere" Knopf?

    //Edit:
    Also laut dieser Seite darf ich eine IP speichern, solange sie zur bloßen Funktionalität erzwingend notwendig ist:
    Websitebetreiber dürfen die IP-Adresse eines Nutzers nur dann speichern, wenn dies zur Nutzung ihres Angebotes notwendig ist oder dessen Funktionsfähigkeit gewährleistet.
    Quelle: datenschutz.org/ip-adresse-datenschutz/

    Bitte benutze OPTION STRICT ON.
    Und optional OPTION EXPLICIT ON.
    Hier ein CODE-CONVERTER.

    Suchanfragen-Ansatz für GOOGLE.
    Prüfe deinen Beitrag in einer RECHTSCHREIBPRÜFUNG.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SystemException“ ()

    da ich kein Anwalt bin solltest du da um auf Nummer sicher zu gehen einen zu rate ziehen.

    Gib mal bitte was anderes als "There was an Error" aus... das ist nichts sagend.

    so ala:
    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. require 'mysqli.php';
    3. $limit = 15;
    4. $ip = md5($_SERVER['REMOTE_ADDR']);
    5. $counter = 0;
    6. $sql = "SELECT * FROM contents WHERE created_by='$ip' AND blocked='0'";
    7. foreach ($mysqli->query($sql) as $row) {
    8. $counter++;
    9. }
    10. if($counter < $limit) {
    11. if (isset($_POST['submit'])) {
    12. $file = $_FILES['file'];
    13. $fileName = $_FILES['file']['name'];
    14. $fileTmpName = $_FILES['file']['tmp_name'];
    15. $fileSize = $_FILES['file']['size'];
    16. $fileError = $_FILES['file']['error'];
    17. $fileType = $_FILES['file']['type'];
    18. $fileExt = explode('.', $fileName);
    19. $fileActualExt = strtolower(end($fileExt));
    20. $allowed = array('gif', 'exe', 'jar', 'zip', 'rar', 'gz', '7z', '7zip', 'targz', 'zipx', 'mpeg', 'mpe', 'mov', 'mp4', 'wav', 'mp3', 'wma', 'avi', 'ram', 'wmv', 'aac', 'ogg', 'flac', 'rm', 'txt', 'rtf', 'doc', 'docx', 'pdf', 'xls', 'xlsx', 'mdb', 'accdb', 'ppt', 'pptx', 'odt', 'ods', 'odp', 'odg', 'odf', 'bmp', 'jpg', 'jpeg', 'png');
    21. if(in_array($fileActualExt, $allowed)) {
    22. if($fileError === 0) {
    23. if ($filesize < 100000000000) {
    24. //Upload file
    25. $fileNameNew = str_replace(' ', '_', $fileName);
    26. $fileNameNew = str_replace('<', null, $fileNameNew);
    27. $fileNameNew = str_replace('>', null, $fileNameNew);
    28. $fileDestination = 'uploads/'.$fileNameNew;
    29. move_uploaded_file($fileTmpName, $fileDestination);
    30. //Register $url, $id, $ip and $timestamp in database
    31. $url = "https://cdn.nani-games.net/uploads/".$fileNameNew;
    32. $id = uniqid();
    33. $timestamp = date('Y-m-d');
    34. $sql = "INSERT INTO contents (url, id, created_by, time_stamp, blocked) VALUES ('$url','$id','$ip', '$timestamp', '0')";
    35. $mysqli->query($sql);
    36. header('Location: https://cdn.nani-games.net/');
    37. } else {
    38. echo "Filesize Error";
    39. }
    40. } else {
    41. echo "FileError: ".$fileError;
    42. }
    43. } else {
    44. echo "ext. not allowed";
    45. }
    46. } else {
    47. echo "no post";
    48. }
    49. } else {
    50. echo "limit reached";
    51. }
    52. ?>



    ist jetzt auch nur quick & dirty aber man kann mal debuggen...
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Jetzt lädt er die Datei hoch? Dafuq. Hab außer dem Debug Kram nix abgeändert!
    Hast du ungewollt irgendeinen Fehler rausgepatcht? xD Wie auch immer du das gemacht hast.
    You are a wizard harry.
    Bitte benutze OPTION STRICT ON.
    Und optional OPTION EXPLICIT ON.
    Hier ein CODE-CONVERTER.

    Suchanfragen-Ansatz für GOOGLE.
    Prüfe deinen Beitrag in einer RECHTSCHREIBPRÜFUNG.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SystemException“ ()

    Much confused....
    Bitte benutze OPTION STRICT ON.
    Und optional OPTION EXPLICIT ON.
    Hier ein CODE-CONVERTER.

    Suchanfragen-Ansatz für GOOGLE.
    Prüfe deinen Beitrag in einer RECHTSCHREIBPRÜFUNG.