Ergebnis 1 bis 12 von 12

Thema: [PHP] Upload Script - Variabel Probs?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Sorry, aber ich krieg das nicht hin. Ich bekomm nachdem ich auf Upload drücke (die Datei wird auch upgeloadet) immer diese Fehlermeldung:


    Warning: move_uploaded_file(/www/www/virtual/armitage2k.net/htdocs/public/scripts/upload/up/): failed to open stream: Is a directory in /www/www/virtual/armitage2k.net/htdocs/public/scripts/upload/index.php on line 50

    Warning: move_uploaded_file(): Unable to move '/www/www/virtual/armitage2k.net/phptmp/php0fYkNz' to '/www/www/virtual/armitage2k.net/htdocs/public/scripts/upload/up/' in /www/www/virtual/armitage2k.net/htdocs/public/scripts/upload/index.php on line 50


    Also am besten ich poste mal meine gesamte Source damit ihr seht was ich eigentlich gebastelt hab. Sorry, aber PHP ist definitiv nicht meine Stärke, fang grad erst an damit effizient zu basteln.

    Code:
    <p>
    
    <?
    $_FILES['file']['name'];				// Name der Datei auf deinem PC
    $_FILES['file']['type'];				// MIME Typ z.B. text/plain
    $_FILES['file']['size'];				// Dateigröße in Byte
    $_FILES['file']['tmp_name'];			// Name der hochgeladenen Datei im temporären Verzeichnis
    $_FILES['file']['error'];			// Eventuelle Fehlermeldung
    $status = $_GET['upload'];
    
    
    
    if  ($status=='1')
    {
    $form_password = $_POST['password'];
    include("config.php");
    if ($form_password == $password)
    {
    move_uploaded_file($_FILES['file']['tmp_name'], '/www/www/virtual/armitage2k.net/htdocs/public/scripts/upload/up/' . $_FILES['userfile']['name']);
    echo "<center><div class='norm'><b>$file_name was successfully uploaded.</b></div></center>";
    }
    else
    {
    echo "<center><div class='norm'><b>The upload password was not correct, please go back and re-enter the password correctly.</b></div></center>";
    }
    }
    else
    {
    ?>
    
    
    <table>
    <form action="<? $self_file = $_SERVER['PHP_SELF']; echo "$self_file"; ?>?upload=1" enctype="multipart/form-data" method="post">
    
     <tr>
      <td style="padding:2px">Passwort:</td>
      <td style="padding:2px"><input name="password" type="password" cols="30"></td>
     </tr>
     <tr>
      <td style="padding:2px">Datei:</td>
      <td style="padding:2px"><input name="file" type="file" class="textarea"></td>
     </tr>
      <tr>
      <td align="center"><input name="Submit" type="submit" value="Upload" ></td>
     </tr>
    </form>
    <?
    }
    ?>
    </table>
    
    
    </p>
    config.php
    Code:
    <?php
    
    $password = 'passwort';
    $upload_folder = 'http://www.meineadresse.net/public/scripts/uploader/up/';
    
    ?>
    Der gesamte Ordner inkl. Dateien hat CHMOD 777, trotzdem will es nicht so richtig funktionieren.

    Danke für die Hilfe,
    A2k

  2. #2
    Ich glaub es liegt ean einem simlen Tippfehler meinerseits ; ;
    Ach ja, die $_FILES Variablen sind automatisch gegeben, wenn was hochlädst, du musst sie also nicht selbst erstellen.

    Code:
    <p>
    
    <?
    //$_FILES['file']['name'];				// Name der Datei auf deinem PC
    //$_FILES['file']['type'];				// MIME Typ z.B. text/plain
    //$_FILES['file']['size'];				// Dateigröße in Byte
    //$_FILES['file']['tmp_name'];			// Name der hochgeladenen Datei im temporären Verzeichnis
    //$_FILES['file']['error'];			// Eventuelle Fehlermeldung
    $status = $_GET['upload'];
    
    
    
    if  ($status=='1')
    {
    	$form_password = $_POST['password'];
    	include("config.php");
    if ($form_password == $password)
    {
    move_uploaded_file($_FILES['file']['tmp_name'], '/www/www/virtual/armitage2k.net/htdocs/public/scripts/upload/up/' . $_FILES['file']['name']);
    echo "<center><div class='norm'><b>$file_name was successfully uploaded.</b></div></center>";
    }
    
    else
    {
    echo "<center><div class='norm'><b>The upload password was not correct, please go back and re-enter the password correctly.</b></div></center>";
    }
    }
    else
    {
    ?>
    
    
    <table>
    <form action="<? $self_file = $_SERVER['PHP_SELF']; echo "$self_file"; ?>?upload=1" enctype="multipart/form-data" method="post">
    
     <tr>
      <td style="padding:2px">Passwort:</td>
      <td style="padding:2px"><input name="password" type="password" cols="30"></td>
     </tr>
     <tr>
      <td style="padding:2px">Datei:</td>
      <td style="padding:2px"><input name="file" type="file" class="textarea"></td>
     </tr>
      <tr>
      <td align="center"><input name="Submit" type="submit" value="Upload" ></td>
     </tr>
    </form>
    <?
    }
    ?>
    </table>
    
    
    </p>
    Der Tippfehler war, dass ich bei move_uploaded_file() die Angabe vom Manual übernommen hatte, ohne sie anzupassen.

  3. #3
    "If it's not one thing, it's another"

    Hab jetzt mal die geänderte Zeile eingefügt und die Variablen gelöscht. Jetzt bekomm ich zwar keine Fehlermeldung mehr, aber er will mir trotzdem keine Datei in das gewünschte Verzeichnis laden....
    Gott, es kann doch nicht sein dass ein so simpler Dateiupload derartige Probleme macht....

    Trotzdem vielen lieben Dank für die ganze Hilfe!
    A2k

    Hier nochmal die aktuelle Source:
    Code:
    <p>
    
    <?
    $status = $_GET['upload'];
    
    if  ($status=='1')
    {
    $form_password = $_POST['password'];
    include("config.php");
    if ($form_password == $password)
    {
    move_uploaded_file($_FILES['file']['tmp_name'], '/www/www/virtual/armitage2k.net/htdocs/public/scripts/upload/up/' . $_FILES['file']['name']);
    echo "<center><div class='norm'><b>$file_name was successfully uploaded.</b></div></center>";
    }
    else
    {
    echo "<center><div class='norm'><b>The upload password was not correct, please go back and re-enter the password correctly.</b></div></center>";
    }
    }
    else
    {
    ?>
    
    
    <table>
    <form action="<? $self_file = $_SERVER['PHP_SELF']; echo "$self_file"; ?>?upload=1" enctype="multipart/form-data" method="post">
    
     <tr>
      <td style="padding:2px">Passwort:</td>
      <td style="padding:2px"><input name="password" type="password" cols="30"></td>
     </tr>
     <tr>
      <td style="padding:2px">Datei:</td>
      <td style="padding:2px"><input name="file" type="file" class="textarea"></td>
     </tr>
      <tr>
      <td align="center"><input name="Submit" type="submit" value="Upload" ></td>
     </tr>
    </form>
    <?
    }
    ?>
    </table>
    
    
    </p>

  4. #4
    Ich habe das Script jetzt mal auf meiem PC getestet.
    Bei der gelegenheit: Bitte immer <?php schreiben, das ist die einzige PHP Kennung die immer funktioneirt

    Das Script hat funktioniert.

    Ich denke ser Fehler liegt in der Pfadangabe:
    Code:
    /www/www/virtual/armitage2k.net/htdocs/public/scripts/upload/up/
    Die Form passt. Die Angabe hatte ich bei mir aber falsch, da ein Verzeichnis falsch geschrieben war, was in einer leeren Seite resultierte.

    Überprüf also den Pfad ggf. mit phpinfo() und korrigiere ihn. Eine andere Fehlerquelle kann es nicht geben.

  5. #5
    Jo, Script läuft jetzt endlich, allerdings nicht auf der Seite wo es eigentlich hin soll
    Hab das Script jetzt rein interessehalber mal auf meinem PHP5 Host laufen lassen und da funktioniert es einwandfrei. Kann es sein dass event. bestimmte Befehle im Script auf dem Host meiner eigentlichen Website nicht erkannt werden (PHP4 --> phpinfo())?

    Danke nochmals für die ganze Hilfe!
    A2k

  6. #6
    Hm, ich habe zwar hier auch PHP 5, aber wir verwenden keine Funktionen die es in deiner PHP 4 Version nicht auch gibt.

    Ich weis auch nicht, was error_reporting(2039); genau bedeutet, eventuell fügst du error_reporting(E_ALL); über deinem Script ein, vielleicht gibt dir das Script dann eine zusätzliche Warnung aus.

    Ansonnsten sehe ich nicht, wo das Problem liegen könnte, Dateiuploads sind bei dir aktiviert usw.

  7. #7
    Interessant. Auf meinem PHP5 Server gehts reibungslos. Auf meinem PHP4 Server hab ich jetzt mal auf alle Fehler anzeigen und bekomm da die Meldung dass 2 Variablen undefiniert sind. Das Script ist aber 1:1 dasselbe wie auf dem PHP5 Server....?

    Hier mal die Fehlermeldung:
    Notice: Undefined index: upload in /www/www/virtual/armitage2k.net/htdocs/public/scripts/upload/uploader.php on line 22

    Notice: Undefined index: file in /www/www/virtual/armitage2k.net/htdocs/public/scripts/upload/uploader.php on line 23

    Dabei gehts um die Variablen $status und $dateiname:
    Code:
    <?php
    error_reporting(E_ALL);
    
    $status = $_GET['upload'];
    $dateiname = $_FILES['file']['name'];
    
    if  ($status=='1')
    {
    $form_password = $_POST['password'];
    include("config.php");
    if ($form_password == $password)
    {
    move_uploaded_file($_FILES['file']['tmp_name'], '/www/www/virtual/armitage2k.net/htdocs/public/files/' . $_FILES['file']['name']);
    echo "<center><div class='norm'><b>$dateiname wurde erfolgreich am Server gespeichert.</b></div>
    <br /><br />
    <a href=\"javascript:history.go(-1)\"><input type=submit name=sbm value=Back></a><input type=submit name=sbm value=Close onClick=window.close()></center>";
    }
    else
    {
    echo "<center><div class='norm'><b>Das Passwort ist nicht korrekt, bitte nochmal eingeben.</b></div></center>";
    }
    }
    else
    {
    ?>
    Naja, wenn niemanden mehr einfällt was da los ist, ist es auch egal. Aber nochmal vielen herzlichen Dank für die ganze Hilfe!
    A2k

  8. #8
    Nun, PHP4 und 5 haben Unterschiede in der Fehlerausgabe. PHP 4 zeigt bei E_ALL alles an, PHP 5 bei E_ALL + E_STRICT.

    Wie du siehst sind deine Fehlermeldungen vom Typ Notice: Undefined index:.

    Wenn du das Script aufruftst hast du in der Adresse kein ?upload=1 gegeben, d.h. die Variable $_GET['upload'] gibt es nicht.

    Genauso verhält es sich mit der Variable $_FILES['file'].

    Statt
    PHP-Code:
    if  ($status=='1'
    schreibt man normalerweise
    PHP-Code:
    if ( isset ( $_GET['upload'] ) AND $_GET['upload'] == 
    d.h. Ist die Variable gesetzt UND ist sie gleich 1?

    Die Variable $dateiname kannst du eigentlich Löschen, bzw. in die if-Verschachtelung einfügen anstatt außerhalb wo sie nichts zu suchen hat.

    Allerdings sind das keine Fehler die den Upload beeinträchtigen könnten.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •