Ankündigung

Einklappen
Keine Ankündigung bisher.

Upload auf einem gehosteten Webserver nicht möglich

Einklappen

Neue Werbung 2019

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

  • Upload auf einem gehosteten Webserver nicht möglich

    Hallo Zusammen,

    ich habe gerade den Hoster gewechselt und die Webseite einer Redaktion dorthin umgezogen. War grundsätzlich kein großer Aufwand, Pfade anpassen etc. Jetzt stehe ich aber vor folgendem Problem.
    Der Benutzer kann, wenn er einen Artikel bearbeitet, auch Bilder hochladen. Dies geschieht über ein einfaches Formular. Wenn ich das nun beim neuen Hoster versuche, dann kommt das BIld nicht auf dem Server an.
    In der $_FILES kann ich zwar den Tempname auslesen, der scheinbar auch vergeben wird, aber die Datei liegt nicht im tmp-Verzeichnis. Nun habe ich beim Hoster nachgefragt, ob er in der php.ini das upload_tmp_dir setzen kann. Da das ein gehosteter Webserver und kein root-Server ist, wurde diese Anfrage aber verständlicherweise abgelehnt. Wie kann ich denn jetzt zur Laufzeit ein upload_tmp_dir setzen, damit ich wieder Dateien hochladen kann?
    Da ich noch nicht über soviel Erfahrung mit Hostern verfüge und beim letzten Hoster alles auch ohne spezielle Einstellungen funktionierte, wurde ich bisher nie mit diesem Problem konfrontiert.

    Vielen Dank schon mal im Voraus.

  • #2
    Wie sieht denn der Inhalt von $_FILES aus?

    Kommentar


    • #3
      Hat denn der Ordner auch die demensprechenden Rechte? http://php.net/manual/de/function.chmod.php

      Kommentar


      • #4
        Hallo,

        also, der Inhalt von $_FILES sieht wie folgt aus:

        tmp_name: /tmp/phpCuKDxr
        size: 30280
        name: clipart-ernte01.jpg (ist nur ein Beispiel)
        error: 0

        Der /tmp Ordner gehört root und hat die Rechte 777, also Vollzugriff. Das bringt mir aber nichts, da das tmp-Verzeichnis nicht in der php.ini als upload_tmp_dir gesetzt wird.
        Die Frage ist halt, ob ich in meinem php-Script das tmp-Verzeichnis setzen kann, z.B. auf den Verzeichnis /httpdocs/redaktion/tmp.
        Denn die Datei mit dem tmp_name erscheint nicht im /tmp-Verzeichnis.

        Kommentar


        • #5
          Zitat von BOfH73 Beitrag anzeigen
          Denn die Datei mit dem tmp_name erscheint nicht im /tmp-Verzeichnis.
          Woher weißt du das? Auf einem normalen Webspace kommt man ja nicht so ohne weiteres an das tmp-Verzeichnis.

          Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

          Kommentar


          • #6
            Hallo,

            in der Dateiverwaltung von netcup kann ich im Basisverzeichnis das tmp-Verzeichnis sehen und auch in das Verzeichnis wechseln. Dort ist dann nichts. Da der Error in $_FILES 0 ist tippe ich fast darauf, dass netcup die Datei hochläd und dann löscht.
            Wäre auch nachvollziehbar, denn sonst könnte ja jeder, der sich auf diesem Server tummelt, meine temporäre Datei lesen.

            Ich suche halt eine Möglichkeit, das upload_tmp_dir selbst zur Laufzeit festzulegen. Normalerweise geht das in der php.ini. Auf die habe ich aber keinen Zugriff, weil es ein gehosteter Webserver ist.

            Angehängte Dateien

            Kommentar


            • #7
              Hast du mal beim Support von Deinem Hoster nachgefragt? Fileupload ist ja nun wirklich nichts total absurdes und sollte eigentlich bei jedem Hoster (auch wenns ein shared hosting ist) problemlos funktionieren.

              Kommentar


              • #8
                Abgesehen davon - Also Info:

                Zitat von BOfH73
                kann ich ... das tmp-Verzeichnis sehen und auch in das Verzeichnis wechseln. Dort ist dann nichts
                Zitat von Doku
                Wurde die Datei in dem temporären Verzeichnis nicht verschoben oder umbenannt, wird sie am Ende des Requests gelöscht
                PHP-Doku: http://php.net/manual/de/features.fi...ost-method.php
                The string "()()" is not palindrom but the String "())(" is.

                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  hausl

                  Gleich nach dem Upload wird die Datei von mir in das eigentliche Zielverzeichnis kopiert. Aber ohne Datei gibt es da nichts zu kopieren...
                  Ich werde mal das Script dahingehend modifizieren, dass ich vor dem Kopiervorgang auf das Vorhandensein der tempörären Datei prüfe und mir ggf. eine Meldung ausgeben lasse, dann wissen wir mehr.
                  Aber danke nochmal für die Info...

                  Kommentar


                  • #10
                    Zitat von BOfH73 Beitrag anzeigen
                    Gleich nach dem Upload wird die Datei von mir in das eigentliche Zielverzeichnis kopiert. Aber ohne Datei gibt es da nichts zu kopieren...
                    Wieso kopieren? Die Datei wird doch verschoben:

                    http://php.net/manual/de/function.mo...oaded-file.php

                    Kommentar


                    • #11
                      Vielleicht zeigst du einfach auch mal dein Script?

                      Kommentar


                      • #12
                        Hier mal der relevante Teil, der ausgeführt wird, wenn das Formular abgeschlossen wurde:

                        PHP-Code:

                                        $form_file_tempname 
                        $_FILES['filename']['tmp_name'];
                                        
                        $form_file_size $_FILES['filename']['size'];
                                        
                        $form_file_error $_FILES['filename']['error'];
                                        
                        $form_org_file_name $_FILES['filename']['name'];
                                        
                        $form_bildtitel $_REQUEST['bildtitel'];
                                        if(
                        $form_bildtitel==""){
                                            
                        $form_file_name 'bild_'.date("YmdHis");
                                            
                        $form_bildtitel $akt_artikel_name.'_Bild'.count($bildListe)+1;
                                        }else{
                                            
                        $form_file_name _clear_input($form_bildtitel"Dateiname");
                                        };

                        echo 
                        'Temp-Datei: '.$form_file_tempname.'<br>';

                        $endung _get_file_extension($form_org_file_name);

                        if(
                        _check_file_extension($fsql$form_org_file_name)){

                        $target_stamp date("YmdHis");

                        $targetfile_name $edit_id.'-'.$target_stamp.'-'.strtolower($form_file_name.'.'.$endung);

                        $ergebnis copy($form_file_tempname,$upload_pfad.'/'.$targetfile_name);

                        if(!
                        $ergebnis){

                        _create_errormessage('Die Datei konnte nicht hochgeladen werden<br>'._get_file_upload_error_text($form_file_error).'<br>Quelle: '.$form_file_tempname.'<br>Ziel: '.$upload_pfad.'/'.$targetfile_name.'<br>Dateigr&ouml;&szlig;e: '.$form_file_size.' Bytes<br>Originalname: '.$form_org_file_name'artikel.php?mode=bearbeiten&id='.$edit_id.'<br>'.sys_get_temp_dir(),1);
                        exit;

                        }else{

                        Script wird normal weitergeführt

                        }; 
                        _get_file_extension, _check_file_extension und _create_errormessage sind Funktionen von mir, die das tun was sie sollen (siehe Funktionsname)

                        Kommentar


                        • #13
                          copy() ist ja auch Quatsch. Wundert mich nicht, dass es nicht funktioniert.

                          Kommentar


                          • #14
                            Hat bisher immer funktioniert.

                            Ich baue gerne mal move_uploaded_file ein.

                            Kommentar


                            • #15
                              Du nutzt ja nirgends move_uploaded_file().. Das kann doch nicht gehen. Woher hast du das? Wohl nicht aus der Doku.
                              The string "()()" is not palindrom but the String "())(" is.

                              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                              PHP.de Wissenssammlung | Kein Support per PN

                              Kommentar

                              Lädt...
                              X