Dateiupload und SafeMode

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dateiupload und SafeMode

    Hallo!

    Ich habe folgendes Problem und wurde auch hier mit der Suchfunktion nicht sonderlich schlau.
    Also ich versuche auf einem gehosteten Provider eine Datei mittels POST-Variablen und einer Funktion hochzuladen. Die Variablenübergabe funktioniert einwandfrei mit dem folgenden Skript:

    PHP-Code:
    function Upload_Fotos()
    { global 
    $_POST$_FILES;
      
    $KFZ_ID=$_POST["KFZ_ID"];
      
    $PATH '../fotos/';
      
      for (
    $i=0;$i<10;$i++)
      { 
    $file=$_FILES["File$i"]['name'];
          
    $tmp=$_FILES["File$i"]['tmp_name'];
          if (!empty(
    $file)) 
            { 
    $fname=$PATH.$file;
              echo 
    "Datei $fname<br>\n";
            
              if (
    file_exists($fname)) 
            { print 
    "Die Datei $fname existiert bereits"
                
    $error=1;      
              } 
              else
              { if (
    move_uploaded_file($tmp$fname)) {foto_in_db_eintragen($KFZ_ID,$file);}
            } }   
      }

    Allerdings erhalte ich folgende Fehlermeldung:

    Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 10060
    is not allowed to access /
    Allerdings steht bei phpinfo():
    file_uploads: On (Local Value) und On (Master Value).
    safe_mode: On (Local Value) und Off (Master Value)
    safe_mode_exec_dir no value no value
    safe_mode_gid Off Off
    safe_mode_include_dir no value no value

    Allerdings verstehe ich jetzt nicht, ob man da jetzt eine Datei hochladen kann oder nicht.
    Falls es dennoch möglich ist, eine Datei hochzuladen, so bitte ich hier um Hilfe.

  • #2
    PHP-Code:
    global $_POST$_FILES
    ist nicht dein Ernst, oder? Stichwort Super- bzw. autoglobals...

    Zu deinem Problem: Hilft dir das eventuell?
    Nieder mit der Camel Case-Konvention

    Kommentar


    • #3
      mach ein FTP upload draus, damit umgehst du den safemode
      Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
      - ...und solche Behauptungen in "falsches Resourcenmanagement"

      Kommentar


      • #4
        Musste der Link zu ausgerechnet dieser Seite führen?

        Nimm doch lieber das Manual

        http://de.php.net/manual/de/features.safe-mode.php
        Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
        var_dump(), print_r(), debug_backtrace und echo.
        Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
        Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
        Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

        Kommentar


        • #5
          Danke, auf diesen Seiten war ich vorher schon, bin aber nicht schlau daraus geworden.

          Wie realisiert man einen FTP-Upload?

          Kommentar


          • #6
            hier findest du hilfe: http://www.php.net/manual/de/ref.ftp.php
            Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
            - ...und solche Behauptungen in "falsches Resourcenmanagement"

            Kommentar


            • #7
              Vielen Dank, das bringt mich schon mal weiter, allerdings hab ich jetzt folgendes Problem mit FTP-Upload:

              Warning: ftp_put(): open_basedir restriction in effect. File(/tmp/phpNHVkMj) is not within the allowed path(s): (/var/kunden/webs/auersperg/html/) in /var/kunden/webs/auersperg/html/admin/admin-neu.php on line 562
              Was mach ich da jetzt? Stimmen die Pfade nicht oder wird es mir generell verweigert?

              Kommentar


              • #8
                Original geschrieben von ayin

                Was mach ich da jetzt? Stimmen die Pfade nicht oder wird es mir generell verweigert?
                sag mal, liest du die Fehlermeldung nicht? steht doch eindeutig da

                Kommentar


                • #9
                  Dach, lese ich schon, aber ich hab keine Möglichkeit die temporären Pfade zu ändern, weil der WebSpace gemietet ist, daher die Frage, was ich da machen kann.

                  Kommentar


                  • #10
                    tja ich weiss ja nicht was du machst, wie soll ich denn was dazu sagen wie sieht denn der Code mit ftp_put aus, wo liegt deine lokale Datei? sage jetzt aber bitte nicht, dass du trotz alldem eine Datei per Formular hochgeladen hast, dann versuchst via ftp zu verschieben

                    Kommentar


                    • #11
                      sage jetzt aber bitte nicht, dass du trotz alldem eine Datei per Formular hochgeladen hast, dann versuchst via ftp zu verschieben
                      ICh muss dich leider enttäuschen, genau das ist der Fall. Ich weiss es halt nicht besser, wie man das sonst machen sollte.
                      Ich versuche lediglich ein Formular zu erstellen, mit dem ich von meiner Festplatte Bilder in ein spezifisches Verzeichnis am Server hochladen kann.

                      PHP-Code:
                      function Upload_Fotos()
                      { global 
                      $_POST$_FILES;
                        
                      $KFZ_ID=$_POST["KFZ_ID"];
                        
                      $PATH '/html/fotos';
                        
                        for (
                      $i=0;$i<10;$i++)
                        { 
                      $local_file=$_FILES["File$i"]['tmp_name'];
                            
                      $file=$_FILES["File$i"]['name'];
                            
                      $destination_file=$PATH."/".basename($file);
                            
                            echo 
                      "localfile: $local_file <br> file: $file<br> destination_file: $destination_file<br>";
                            
                            if (!empty(
                      $file)) 
                            { 
                      $ftp_server "IP"// IP Server Address (exlucde [url]ftp://[/url])
                              
                      $ftp_user_name "uname";    // FTP Server Username
                              
                      $ftp_user_pass "pwd";      // Password

                              // Connect to FTP Server
                              
                      $conn_id ftp_connect($ftp_server);
                              
                      // Login to FTP Server
                              
                      $login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass);
                         
                             
                      // Verify Log In Status
                             
                      if ((!$conn_id) || (!$login_result)) 
                               {
                                 echo 
                      "Verbindung zum Server fehlgeschlagen<br />";
                                 echo 
                      "Bitte wiederholen";
                                 exit;
                               } 
                               else
                               { echo 
                      "Verbunden mit Server, Datei $file wird hochgeladen <br />";
                               }
                             
                      $upload ftp_put($conn_id$PATH."/".basename($file), $local_file=$_FILES["File$i"]['tmp_name'], FTP_BINARY);  
                            
                      // Verify Upload Status
                            
                      if (!$upload) {
                             echo 
                      "<h2>FTP upload von ".$_FILES["File$i"]['name']." fehlgeschlagen!</h2><br /><br />";
                             } else {
                             echo 
                      "Datei erfolgreich hochgeladen!<br />" $_FILES['File$i']['name'] . " <br />";
                             
                      foto_in_db_eintragen($KFZ_ID,$file);
                             }
                             
                      ftp_close($conn_id); // Close the FTP Connection
                           
                      }
                         }

                      Zuletzt geändert von ayin; 09.01.2007, 10:49.

                      Kommentar


                      • #12
                        Und nochmal: global $_POST, $_FILES ist ganz schöner Quatsch... auch wenn das nichts mit dem Topic zu tun hat.
                        Nieder mit der Camel Case-Konvention

                        Kommentar


                        • #13
                          Original geschrieben von ayin
                          ICh muss dich leider enttäuschen, genau das ist der Fall. Ich weiss es halt nicht besser, wie man das sonst machen sollte.
                          Ich versuche lediglich ein Formular zu erstellen, mit dem ich von meiner Festplatte Bilder in ein spezifisches Verzeichnis am Server hochladen kann.
                          das Problem ist aber, wenn safe_mode ist ON und open_basedir noch dazu, dann kannst du dich nur unterhalb deines Webspace bewegen und sonst nirgends, das ist gewollt von Provider. Versuche mal mit putenv zu umgehen, oder deine Daten ganz normal über FTP-Client hoch zu laden, nicht per script.

                          Kommentar


                          • #14
                            Was kommt bei Testausgaben bei $fname und $tmp raus?
                            Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                            var_dump(), print_r(), debug_backtrace und echo.
                            Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                            Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                            Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                            Kommentar


                            • #15
                              Versuche mal mit putenv zu umgehen, oder deine Daten ganz normal über FTP-Client hoch zu laden, nicht per script.
                              Also mit FTP-Client komme ich problemlos auf den WebSpace, damit aktualisiere ich ja immer die Daten. Aber ich würde gerne das via Script zum laufen bringen. Die Homepage ist für einen Freund von mir und ich will es mir ersparen, jedesmal für ihn Fotos hochzuladen müssen.

                              Was kommt bei Testausgaben bei $fname und $tmp raus?
                              Also die Dateinamen stimmen, das hab ich schon überprüft, nur die Dateien werden zwar scheinbar hochgeladen, aber nicht in das Verzeichnis geschrieben, welches ich gerne hätte, genaugenommen speichert er die Datei gar nicht.

                              Kommentar

                              Lädt...
                              X