Datei Upload funktioniert am Rootserver nicht

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

  • Datei Upload funktioniert am Rootserver nicht

    Hallo ein Dateiupload funktioniert in meiner localhost/xampp Umgebung einwandfrei, auf dem Rootserver aber nicht.

    Folgende Ausgaben:

    => Array ( [name] => Testdatei.txt [type] => text/plain [tmp_name] => /tmp/phprdorxb [error] => 0 [size] => 32 ) )
    Upload-Datei: /tmp/phprdorxb
    Fehlercode beim Upload: 0
    Fehler:There is no error, the file uploaded with success

    Es gibt zwar einen Fehlercode 0, die Datei wird aber nicht in das Verzeichnis geladen.

    Zusatzinfo: in der php.ini sind uploads zugelassen, ich habe aber folgenden Eintrag gemacht:
    upload_tmp_dir = /home/dokumente_


    PHP-Code:
    $dateiname $_SESSION['dateiname'] = trim($_FILES['datei']['name']);
    $path $_SESSION['directory'] . $unternehmen "_MUSTERDOKUMENTE";

    if (!
    file_exists($path)) {
        
    mkdir($path0755);
    }
    $pathfilename $path "/" $dateiname;

    if (!
    move_uploaded_file($_FILES['datei']['tmp_name'], $pathfilename)) {
        
    print_r($_FILES);
        echo 
    "<br>Upload-Datei: " $_FILES['datei']['tmp_name'];
        echo 
    "<br>Fehlercode beim Upload: " $_FILES['datei']['error'];
        
    $fehlercode = array (
            
    => "There is no error, the file uploaded with success",
            
    => "The uploaded file exceeds the upload_max_filesize directive in php.ini",
            
    => "The uploaded file exceeds the MAX_FILE_SIZE directive that was 
    specified in the HTML form"
    ,
            
    => "The uploaded file was only partially uploaded",
            
    => "No file was uploaded",
            
    => "Missing a temporary folder"
        
    );
        
    $index $_FILES['datei']['error'];
        echo 
    "<br>Fehler:" $fehlercode[$index];
    } else {
        
    $typ "m";
        
    $musterdokname $musterdokument->speichernMusterdok($typ);
        
    $musterdokument->anzeigeMusterdok($musterdokname$typ);

    Zuletzt geändert von Stonebreaker62; 26.01.2008, 15:37.

  • #2
    error_reporting(E_ALL);
    ini_set('display_errors', 'on');

    Kommentar


    • #3
      Warum tust du sowas? /home ist eindeutig nur für Home-Dirs gedacht! /tmp ist extra für temporäre Zwischenablagerungen gemacht! Abgesehen davon, dass deine Umstellung offensichtlich nicht gegrifffen hat, wenn du dir das FILES-Array anschaust!
      [FONT="Helvetica"]twitter.com/unset[/FONT]

      Shitstorm Podcast – Wöchentliches Auskotzen

      Kommentar


      • #4
        Habe den Eintrag upload_tmp_dir in der php.ini wieder auskommentiert, die Empfehlung von onemorenerd

        error_reporting(E_ALL);
        ini_set('display_errors', 'on');

        umgesetzt eine Ausgabe mit echo auf die Variable $pathfilename gesetzt und erhalte nun folgende Ausgaben:

        Warning: mkdir(): Permission denied in /srv/www/vhosts/plan-compare-benchmark.com/httpdocs/musterdokneu1.php
        on line 13
        pathfilename: dokumente_DZW_MUSTERDOKUMENTE/Testdatei.txt
        Warning: move_uploaded_file(): Unable to access dokumente_DZW_MUSTERDOKUMENTE/Testdatei.txt in /srv/www/vhosts/plan-compare-benchmark.com/httpdocs/
        musterdokneu1.php on line 28
        Array ( [datei] => Array ( [name] => Testdatei.txt [type] =>
        text/plain [tmp_name] => /tmp/phpwfUgPG [error] => 0 [size] => 32 ) )
        Upload-Datei: /tmp/phpwfUgPG
        Fehlercode beim Upload: 0
        Fehler:There is no error, the file uploaded with success
        Zuletzt geändert von Stonebreaker62; 26.01.2008, 15:34.

        Kommentar


        • #5
          Offensichtlich ist der mkdir das Problem. Da ich hier aber ein Verzeichnis unterhalb des DocumentRoot anlege, dürfte die 0755 doch kein Problem sein?

          Kommentar


          • #6
            Du machst ein mkdir mit Dateinamen? Steht zumindest in der Fehlermeldung...

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              ich denke nein. Habe die Variable $path ausgegeben und erhalte folgende Ausgaben:

              Warning: mkdir(): Permission denied in /srv/www/vhosts/plan-compare-benchmark.com/httpdocs/dokumentneu1.php
              on line 40
              path: dokumente_DZW
              pathfilename: dokumente_DZW/Testdatei.txt Warning: move_uploaded_file():
              Unable to access dokumente_DZW/Testdatei.txt in
              /srv/www/vhosts/plan-compare-benchmark.com/httpdocs/dokumentneu1.php on line 63
              Array ( [datei] => Array ( [name] => Testdatei.txt [type] =>
              text/plain [tmp_name] => /tmp/phpccaq4M [error] => 0 [size] => 32 ) )
              Upload-Datei: /tmp/phpccaq4M
              Fehlercode beim Upload: 0
              Fehler:There is no error, the file uploaded with success

              In $path steht folglich "dokumente_DZW" - das dürfte doch keine probleme bereiten?
              Zuletzt geändert von Stonebreaker62; 26.01.2008, 15:35.

              Kommentar


              • #8
                Na dann schau doch mal ob das Verzeichnis angelegt wird und auch unter welchem Benutzer und mit den richtigen Rechten und ob das übereinstimmt mit den Dingen unter denen der Webserver läuft, etc.~

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  Nein, das Verzeichnis wird nicht angelegt. obwohl ich es unterhalb des DocumentRoot anlegen will. Habe auch schon mit open_basedir rumexperimentiert - kein Erfolg. Aber offensichtlich kann ich die Werte in der php.ini nicht überschreiben, weil irgendwo ein local Wert definiert ist (kann ihn in der httpd.conf nicht finden).

                  Habe nun mal versucht, die Dokumente im /tmp Verzeichnis abzulegen, das im basedir-Wert erlaubt ist. Das scheitert mit der Message

                  Warning: mkdir(): SAFE MODE Restriction in effect. The script whose uid is 10001 is not allowed to access /tmp owned by uid 0 in /srv/www/vhosts/plan-compare-benchmark.com/httpdocs/dokumentneu1.php on line 41

                  Kommentar


                  • #10
                    Offensichtlich ist der safe mode der Hintergrund für das Problem. Obwohl ich einen rootserver habe ist der irgendwo gesetzt (nicht in der php.ini und auch nicht in der httpd.conf - wahrscheinlich in einem der vielen includes in der httpd.conf. Muss mich mal auf die Suche machen.

                    Ich gehe doch recht in der Annahme dass ein safe mode in einem Rootserver keinen besonderen Sinn macht?

                    Noch ne Frage: Ich will Dokumente irgendwo außerhalb des DocumentRoot in einem Verzeichnis ablegen. Wo sollte das sein, wenn nicht im /home Verzeichnis?

                    Kommentar


                    • #11
                      Original geschrieben von Stonebreaker62
                      Noch ne Frage: Ich will Dokumente irgendwo außerhalb des DocumentRoot in einem Verzeichnis ablegen. Wo sollte das sein, wenn nicht im /home Verzeichnis?
                      /srv/www/vhosts/plan-compare-benchmark.com/private wäre ein guter Platz.

                      Kommentar


                      • #12
                        Original geschrieben von Stonebreaker62
                        Ich gehe doch recht in der Annahme dass ein safe mode in einem Rootserver keinen besonderen Sinn macht?
                        Es gibt Momente wo das Sinn macht, aber da kann man besser den Webserver unter eingeschränkten Rechten laufen lassen... guck halt mal in Tutorials oder so

                        Noch ne Frage: Ich will Dokumente irgendwo außerhalb des DocumentRoot in einem Verzeichnis ablegen. Wo sollte das sein, wenn nicht im /home Verzeichnis?
                        Zum temporären Speichern in /tmp/ wie es auch schon gesagt wurde, und ansonsten halt irgendwo unterhalb vom Webroot, sofern man ran kommen soll, ansonsten halt irgendwie eine Ebene höher oder sowas ... da gibt es keine festen Richtlinien, mach halt wie es passt und sicher ist.

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar

                        Lädt...
                        X