URL: https://www.overclockers.at/coding-stuff/php_probleme_bei_move_uploaded_file_205644/page_1 - zur Vollversion wechseln!
Hi Leute,
ich habe das Problem, dass mein move_uploaded_file nicht wirklich funktioniert.
Zuerst hole ich mir die Daten:
Code: PHPecho "<tr>\n"; echo " <td colspan='4' style='text-align:right;'><b>Bild </b> (opt. 100x100px, max. 50K):"; echo "<input type='hidden' name='MAX_FILE_SIZE' value='50000'>"; echo "<input type='file' name='bild" . $i . "' size='30' accept='image/jpg jpeg' maxlength='50000' ><br>\n"; echo "<input type='hidden' name='MAX_FILE_SIZE' value='100000'><b>Bild </b>(groß, max. 100K):"; echo "<input type='file' name='bild_big" . $i . "' size='30' accept='image/jpg jpeg' maxlength='100000' >\n"; echo "</td>\n"; echo "</tr>\n";
Code: PHPFileUpload($_FILES["bild" . $i], 50000, "../images/players/", $ID, 0); FileUpload($_FILES["bild_big" . $i], 100000, "../images/players/", $ID, 1);
Code: PHP//---------------------------------------------- function FileUpload($file, $size, $path, $ID, $kind) //---------------------------------------------- { if( !empty( $file["name"] ) ) { if( $file["error"] == UPLOAD_ERR_INI_SIZE || $file["error"] == UPLOAD_ERR_FORM_SIZE ) { echo "Die Datei " . $file["name"] . " wure nicht gespeichert. Die maximale Dateigröße beträgt " . $size . " Byte.<br>\n"; return; } $pieces = explode('.', $file["name"]); $type = strtolower( $pieces[sizeof($pieces) - 1] ); if( $type != "jpg" && $type != "jpeg" && $type != "gif" && $kind != 3 && $kind != 4) { echo "Die Datei \"" . $file["name"] . "\" wure nicht gespeichert. Es können nur jpg/jpeg Dateien hochgeladen werden.<br>\n"; return; } if($file["size"] > $size) { echo "Die Datei " . $file["name"] . " wure nicht gespeichert. Die maximale Dateigröße beträgt " . $size . " Byte.<br>\n"; return; } switch($kind) { //Spieler case 0: $fileName = $path . $ID . ".jpg"; break; //Spieler groß case 1: $fileName = $path . $ID . "_big.jpg"; break; //Teambild case 2: $fileName = $path . $ID . "_team.jpg"; break; //Logo case 3: $fileName = $path . $ID . "_logo."; if($type == "gif") $fileName .= "gif"; else $fileName .= "jpg"; break; //Logo klein case 4: $fileName = $path . $ID . "_logo_small."; if($type == "gif") $fileName .= "gif"; else $fileName .= "jpg"; break; } if( !move_uploaded_file($file["tmp_name"], $fileName) ) echo "Fehler beim Uploaden von " . $file["name"]; } }
Ich würde mal einen parser error vermuten - hast du error_reporting(E_ALL) gesetzt in der php.ini?
Sind die Dateien im $_FILES-Array? Wenn nicht dann hast du beim form-Tag das enctype="multipart/form-data" vergessen.
@watchout
Ich hab in meiner config.php die immer mitgeladen wird, folgendes stehen: error_reporting(1). Serverseitig ist folgendes eingestellt: error_reporting (6135). Den Wert kann ich aber nicht ändern.
@mat
Das enctype="multipart/form-data" ist bei mir im form-Tag gesetzt.
Setz im config.php mal folgende Zeilen statt dem error_reporting() rein:
Code:error_reporting(E_ALL); ini_set("display_errors", TRUE);
wenn ich ich die Befehle in meine config.php reinschreibe und dann versuche die Bilder hochzuladen, passiert nix.
Soll heißen, ich klick auf Speichern und es kommt weder eine Fehlermeldung noch wird das Fenster neugeladen (mit den aktuellen Infos dann drinnen...).
Dann passiert definitiv ein Fehler, der aber nicht angezeigt wird.Zitat von bambooSwenn ich ich die Befehle in meine config.php reinschreibe und dann versuche die Bilder hochzuladen, passiert nix.
Soll heißen, ich klick auf Speichern und es kommt weder eine Fehlermeldung noch wird das Fenster neugeladen (mit den aktuellen Infos dann drinnen...).
Poste bitte mal das gesamte Upload-Formular. So wie ich das verstehe, liegt eher da der Hund begraben (wenn sich nach dem Klick auf den Button gar nichts tut). Zusätzlich könntest du auch in die FileUpload-Funktion ganz oben ein var_dump($file) einfügen, um zu schauen ob überhaupt was sinnvolles übergeben wird.
Hab ich mir schon fast gedacht .
Nur finde ich ihn leider nicht. Oder noch besser: ich seh den Fehler einfach nicht.
Für mich wäre der Code richtig.
Deswegen frage ich hier nach, ob jmd von euch den Fehler erkennt.
Hilfts wenn ich den kompletten Code rauflade?
phpinfo() wäre auch praktisch.
Du kannst aber jederzeit einen eigenen Error-Handler schreiben, der dir per echo einfach nur den Fehler ausgibt.
Hier mal die PHP Info: Klick mich
Der Code ist im Anhang.
Einen eigenen Errorhandler zu bauen ist natürlich ein guter Vorschlag, nur bin ich nicht der Programmierer. Die Seite habe ich übernommen und jede Änderung die ich im Code mache bzw. nach Fehlern suche ist, linde gesagt, Schwerstarbeit für mich.
Vielleicht findet jmd den Fehler, denn ich übersehe.
Ansonsten muss ich diese Funktionalität rausnehmen und es irgendwie anders lösen.
lg
Das Problem ist dass parse-errors nicht angezeigt werden, selbst wenn error_reporting(E_ALL) aufgerufen wird (deshalb hab ich auch gefragt ob er in php.ini so eingestellt hat)
Das lässt sich aber durch einen wrapper umgehen:
So wird zuerst error_reporting auf einen sinnvollen wert gesetzt und dann included, geparsed und php merkt - huch parse errorCode: PHPerror_reporting(E_ALL); include("upload.php");
Hab das Ganze mal in den Code integriert.
Folgende Fehler erhalte ich:
Code: PHPWarning: include(upload.php) [function.include]: failed to open stream: No such file or directory in /home/funhoop/public_html/forms/kaderEdit.php on line 4 Warning: include(upload.php) [function.include]: failed to open stream: No such file or directory in /home/funhoop/public_html/forms/kaderEdit.php on line 4 Warning: include() [function.include]: Failed opening 'upload.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/funhoop/public_html/forms/kaderEdit.php on line 4
Folgende Erklärung bringt in deinem Fall zwar nichts, weil lt. phpinfo hast du ja compiler warnings aktiviert, der Vollständigkeit halber schreib ich sie aber dazu:
Zitatähm... "upload.php" war nur symbolisch gemeint da ich ja nicht weiss wie dein file heisst.
Nach der Fehlermeldung vermute ich dass es kaderEdit.php heisst, also machst du ein neues file - zB. kaderEditWrapper.php, das enthält den codeCode: PHPerror_reporting(E_ALL); include("kaderEdit.php");
und statt kaderEdit.php rufst du kaderEditWrapper.php im browser auf. Dann werden parse-errors in fast jeder Konfiguration angezeigt.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025