Upload funzt nicht.



  • Hab ich geändert, und stelle keine veränderungen am Vorgang fest.

    Jedoch steht hier:

    //....
    	if(filesize($_REQUEST['upfile'])==0)
    											{
    												echo "<B><font color=red>Verarbeitungsfehler!</font></b><hr><br>";
    												echo "Es ist ein Fehler aufgetreten! Entweder existiert die gewählte Datei nicht, ist nicht grösser als 0 Byte oder ";
    												echo "es besteht ein allgemeiner, interner Fehler! Klicken Sie auf zurück und versuchen Sie es nochmal.<br><br>";
    												echo "Sollte dieser Fehler mehrmals vorkommen, kontaktieren Sie bitte den Webmaster...<br><HR>";
    												echo "<a href=\"file_verwaltung.php\">[Zurück]</a>";
    												exit;
    											}
    //....
    

    Ändere ich das auf:

    //....
    	if(filesize($upfile)==0)
    											{
    												echo "<B><font color=red>Verarbeitungsfehler!</font></b><hr><br>";
    												echo "Es ist ein Fehler aufgetreten! Entweder existiert die gewählte Datei nicht, ist nicht grösser als 0 Byte oder ";
    												echo "es besteht ein allgemeiner, interner Fehler! Klicken Sie auf zurück und versuchen Sie es nochmal.<br><br>";
    												echo "Sollte dieser Fehler mehrmals vorkommen, kontaktieren Sie bitte den Webmaster...<br><HR>";
    												echo "<a href=\"file_verwaltung.php\">[Zurück]</a>";
    												exit;
    											}
    //....
    

    Bekomme ich im Script den Abbruch an folgender Stelle (Fehler):
    Warning: filesize() [function.filesize]: stat failed for Array in /var/www/vhosts/globesolutions.ch/httpdocs/labs/awi/users/kurzd/file_verwaltung.php on line 172

    Doch "upfile" ist der name des FIle-Feldes im Formular.



  • 1. Kannst Du denn überhaupt Dateien in dieses Verzeichnis schreiben? Hast Du Zugriffsrechte darauf? Du kannst ja mal testweise eine Datei in dieses Upload-Verzeichnis schreiben.
    2. Lass Dir mal den Inhalt dieses Upload-Info-Arrays ausgeben oder gleich phpinfo(); ich bilde mir ein dass zwischen den einzelnen php-Versionen sich die Bezeichniungen sich geändert haben.



  • Techniker schrieb:

    könnte es sein, dass !== nicht möglich ist? ist zwar warscheinlich nicht der Fehler aber mal ausprobieren...

    !== ist absolut korrekt und hier überhaupt erst sinnvoll. Der Identitätsoperator (!==) prüft im Gegensatz zum Äquivalenzoperator (!=) auch den Datentyp auf Gleichheit.

    while (($file = readdir($dh)) !== false)
    

    Hier gibt der Ausdruck (file=readdir(file = readdir(dh)) einen String zurück, es sei denn, das Verzeichnis wurde zu Ende durchlaufen, dann wird der Bool'sche Wert false zurückgegeben. Das !== ist hier also sehr sinnvoll, da eben nicht nur geprüft wird, ob der Wert des Ausdrucks sich zu false casten lässt, sondern wirklich, ob er false ist.

    Ein Ändern von !== zu != ist genau das, was du beschreibst: Nämlich falsch! Würde nämlich eine Datei im Verzeichnis existieren, die 0 heißt ("0" als Dateiname), so würde (file=readdir(file = readdir(dh)) "0" ergeben, was zu false gecastet werden kann und die Schleife würde abbrechen, obwohl das Verzeichnis nicht komplett durchlaufen ist.



  • witte_ schrieb:

    1. Kannst Du denn überhaupt Dateien in dieses Verzeichnis schreiben? Hast Du Zugriffsrechte darauf? Du kannst ja mal testweise eine Datei in dieses Upload-Verzeichnis schreiben.

    Ja. Der gesamte Pfad labs/awi/users/kurzd/pages/ ist auf CHMOD 777 gesetzt.
    Im übrigen wird der Pfad über folgenden Code:

    echo "<b><font size=\"2\">Aktuelles Verzeichnis:</b> <i>".$filepath."</font></i>";
    

    korrekt ausgegeben.

    witte_ schrieb:

    2. Lass Dir mal den Inhalt dieses Upload-Info-Arrays ausgeben oder gleich phpinfo(); ich bilde mir ein dass zwischen den einzelnen php-Versionen sich die Bezeichniungen sich geändert haben.

    Wie meinst Du das jetzt? Allerdings haben sich einige Befehle von PHP4 auf PHP5 geändert aber ich kann mir nicht vorstellen welche. Natürlich das $_SERVER['DOCUMENT_ROOT'] vorher in meinem Script eben nur $DOCUMENT_ROOT hiess und so nicht funktionierte war wohl klar.

    Es ist eben ein älteres Projekt was ich vor ca. 4 Jahren aufgegeben habe und nun ausbessern und weiterführen möchte. Es ist eine einzige Datei namens install.php mit ca. 30'000 Zeilen Code, welche innerhalb von zwei Sekunden alle Verzeichnise und alle 45miteinander verknüpften PHP -Dateien und rechte selbst erstellt und die E-Mails auch selbst erstellt. Dies zudem noch alles individuell an den zu registrierenden User (mittels Formular) anpassbar.

    D.h: Ich muss nur das Registrierungsformular onlinestellen und der rest wird durch eine einzige PHP-Datei erledigt. 🙂

    Grüsse
    Wolf

    PS: árn[y]ék du hast recht, aber im Moment probier ich wirklich alles. Das Script funkitoniere bis ins JAhre 2006, danach nicht mehr. Ich vermute eben dass es mit den neuen Befehlen zu tun hat, kann mir im Moment aber kein Bild daraus machen.



  • Ich wollte sagen, dass sich mittlerweile die Variablen-/Array-Key-Namen, in dem der Name der Originaldatei, Größe, Name der hochgeladenen Datei und Mimetype steht, sich geändert haben. Prüf, ob diese Namen mitdem Originalskript noch übereinstimmen.

    _FILES['userfile']['name'] _FILES['userfile']['type']
    _FILES['userfile']['size'] _FILES['userfile']['tmp_name']

    => ist jetzt ein Array, keine einzelne Variable.



  • Sorry, blöde frage:

    Und wie?

    lg



  • Was wie?

    Prüfe, ob $_FILES['upfile'] ein Array ist. var_dump(), is_array() oder was auch immer, das wirst Du doch wissen müssen. Wahrscheinlich wird es jetzt $_FILES['upfile']['filename'] heissen muesssen oder so.



  • Hab jetzt nichts konstruktives beizutragen, aber....
    Dominic!
    Du lebst auch noch??
    Ist ja cool!



  • Wubbel schrieb:

    Hab jetzt nichts konstruktives beizutragen, aber....
    Dominic!
    Du lebst auch noch??
    Ist ja cool!

    Ach der Wubbel.... hey hallo!
    Ja in der Tat ich lebe noch *g*... gib mal deine MSN-Addy.... meine ist wolfi_ag@hotmail.com ... danke *g*

    @Witte_
    ich kann mit dem leider nichts anfangen. Die Prüfung ergab eigentlich noch immer dasselbe korrekte file und ein korrekter Pfad zurück.



  • àhm Witte_

    ich lande bei folgender Ausgabe und danach bricht das Script wie gewohnt ab:

    Warning: filesize() [function.filesize]: stat failed for kurz.jpg in /var/www/vhosts/globesolutions.ch/httpdocs/labs/awi/users/kurzd/file_verwaltung.php on line 172
    

    und zwar beim "Verarbeitungsfehler". Filesize lautet bei mir so:

    //....
    	else
    										{
    										if(filesize($_FILES['upfile']['name'])==0)
    											{
    												echo "<B><font color=red>Verarbeitungsfehler!</font></b><hr><br>";
    												echo "Es ist ein Fehler aufgetreten! Entweder existiert die gewählte Datei nicht, ist nicht grösser als 0 Byte oder ";
    												echo "es besteht ein allgemeiner, interner Fehler! Klicken Sie auf zurück und versuchen Sie es nochmal.<br><br>";
    												echo "Sollte dieser Fehler mehrmals vorkommen, kontaktieren Sie bitte den Webmaster...<br><HR>";
    												echo "<a href=\"file_verwaltung.php\">[Zurück]</a>";
    												exit;
    											}
    //....
    

    Also der Dateiname wird mir korrekt zurückgegeben...

    Kommentiere ich die Dateigrössen-Prüfung aus, klappt alles wie gewohnt.. also liegt der Fehler irgendwo bei filesize denn $_FILES['upfile']['name']sowie ['size'] klappt nicht. 🙂


Anmelden zum Antworten