lokal klappts, auf dem server nicht mehr!

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

  • lokal klappts, auf dem server nicht mehr!

    Habe ein Script, über das Daten in eine Datenbank eingetragen werden. Zusätzlich hat man die möglichkeit, mehrere Bilder hochzuladen. Diese Bilder sollten dann in einem Zug als große Bilder in einem neu erstellten Ordner gespeichert werden und als Vorschaubilder im Ordner "thumbs", der dann im neu erstellten Ordner erstellt wird.

    Das alles hat auf meinem Lokalen Rechner mit Serverumgebung super geklappt, nun lad ich das script hoch und nix geht mit Verzeichnissen erstellen.

    Die Verzeichnisse werden nicht erstellt, er bleibt aber nicht bei dem else hängen, dass die Verzeichnisse nicht erstellt werden konnten, sondern überspringt dies einfach, bis er zum Bilderupload selbst kommt.

    Hier man der Anfang - wie ich sagen würde wichtige Teil - des Scripts.
    PHP-Code:
    error_reporting(E_ALL);
    include(
    'top.html');

    $event $_POST['event'];
    $datum $_POST['datum'];
    $kommentar $_POST['kommentar'];
    $bildname $_POST['bildname'];
    $anzahl $_POST['upload_felder'];

    if (isset(
    $_POST['speichern'])) {
        include(
    'zugangsdaten.php');
            
        
    // Bilder Upload
        
    $uploadverzeichnis"/bilder/events/$bildname";
        
    $thumbverzeichnis="/bilder/events/$bildname/thumbs";

        
    // Verzeichnisse erstellen
        
    if (!is_dir($uploadverzeichnis))
        {
    mkdir ($uploadverzeichnis,0777);} 
        else echo 
    'Uploadverzeichnis '.$uploadverzeichnis.' konnte nicht erstellt werden.<br>';
        if (!
    is_dir($thumbverzeichnis))
        {
    mkdir ($thumbverzeichnis,0777);} 
        else echo 
    'Thumbverzeichnis '.$thumbverzeichnis.' konnte nicht erstellt werden.<br>';
        
        if (isset(
    $_POST['bilderupload']) && !empty($_FILES["bilder"]["name"])) {
                     
            
    //* Grosse Bilder mit neuem Namen nummeriert (1-6) abspeichern
            
    foreach($_FILES as $bild) {
                
    $max_bilder $anzahl;
                for(
    $i=0$i<$max_bilder$i++) {
                if(
    $bild['name'][$i]) {
                
    $name$bildname."_".$i.".jpg";
                
    move_uploaded_file($bild['tmp_name'][$i], "{$uploadverzeichnis}/{$name}")
                OR die (
    "Bilder konnten nicht gespeichert werden");
                
    chmod("/absoluter pfad/$bildname/$name",0777);
                
                
    $quellbild$uploadverzeichnis.'/'.$name;
                
    $groesse_bildgetimagesize($quellbild);            
                
    $breite_bild$groesse_bild[0];                        
                
    $hoehe_bild$groesse_bild[1];                    
                
                
                
    $thumb_hoehe100;                            
                
    $thumb_breiteceil($breite_bild*$thumb_hoehe/$hoehe_bild);
                
                
    $quelleimagecreatefromjpeg($quellbild);
                
    $thumbimagecreatetruecolor($thumb_breite$thumb_hoehe);
                
    imagecopyresampled($thumb$quelle0000$thumb_breite$thumb_hoehe$breite_bild$hoehe_bild);
                
    imagejpeg($thumb"{$thumbverzeichnis}/{$name}"
                OR die (
    "Thumbs konnten nicht erstellt werden");
                
    chmod("/absoluter pfad/$bildname/thumbs/$name",0777);
                }
                }
            }
        }
        
    mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
        
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
        
        
    mysql_query("INSERT INTO datenbank...") OR die(mysql_error()); 
            
        echo 
    '<b>Das Event '.$event.' wurde gespeichert.</b><br><br>';
        include(
    'event-menu.html');
        exit();

    Stimmt da was im Script nicht, oder hat das was mit dem Server zu tun?

  • #2
    PHP-Code:
    if (!is_dir($uploadverzeichnis))
        {
    mkdir ($uploadverzeichnis,0777);} 
        else echo 
    'Uploadverzeichnis '.$uploadverzeichnis.' konnte nicht erstellt werden.<br>'
    Und lokal hast du die Fehlermeldung erhalten? Kann ich mir nicht so richtig vorstellen. Verzeichnis exstiert nicht und wird damit neu angelegt (mkdir()). Nur fängst du die Rückgabe von mkdir() nicht ab. Du bräuchtest ein weiteres if/else-Konstrukt um die Rückgabe von mkdir() festzustellen und im Fehlerfalle die Meldung auszugeben.
    imho wirst du oben die Fehlermeldung nur dann erhalten wenn das Verzeichnis existiert, also das if nicht erfüllt wird.
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      PHP-Code:
      // Verzeichnisse erstellen
          
      if (!is_dir($uploadverzeichnis))
          {
      mkdir ($uploadverzeichnis,0777);} 
          else echo 
      'Uploadverzeichnis '.$uploadverzeichnis.' konnte nicht erstellt werden.<br>'
      Da steckt ein logischer Fehler drin.
      Wenn der if-Zweig ausgeführt wird, erstellst du das Verzeichnis. Der else-Zweig wird dann nicht ausgeführt. Alles okay.
      Aber wenn das Verzeichnis existiert, wird der else-Zweig ausgeführt und gibt eine Fehlermeldung aus. Eine Fehlermeldung, obwohl das Verzechnis existiert!?

      Was du eigentlich willst ist sowas:
      PHP-Code:
      if (!is_dir() && !mkdir()) 
          die(
      'Verzeichnisfehler'); 

      Kommentar


      • #4
        lokal habe ich keine fehlermeldung erhalten, lokal wurden die verzeichnisse erstellt und das script fehlerfrei ausgeführt.

        woran kanns denn liegen, dass auf nem server verzeichnisse nicht erstellt werden?

        Kommentar


        • #5
          ich würde mal vermuten, dass der apache nicht die benötigten Rechte hat... mach mal ein CHMOD 777 auf /bilder/events/
          signed oder unsigned... das ist hier die Frage

          Kommentar


          • #6
            leider hilft chmod 777 auch nix, verzeichnisse werden nicht erstellt :-(

            Kommentar


            • #7
              setzt vor mkdir mal ein
              PHP-Code:
              $mask umask(0); 
              wirkt manchmal wahre wunder

              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Gibt es wirklich ein Verzeichnis /bilder auf deinem Webserver, also direkt neben /etc, /usr und /bin? Willst du die Bilder nicht lieber unterhalb des DocRoot speichern?

                Kommentar


                • #9
                  Gibts doch nicht, auch $mask = umask(0); verändert nichts! *verzweiflung*

                  Kommentar


                  • #10
                    @TS
                    Kennst du $_SERVER['DOCUMENT_ROOT']? Kann ebenfalls wahre Wunder bewirken. Pfade die mit / beginnen bezeichnen Pfade vom Root-Verzeichnis aus. Und zwar nicht dein DOC_ROOT sondern das Root des Dateisystems des Servers. Und wenn du bei einem Hoster dort reinschreiben könntest dann wäre das nicht gut!
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      PHP-Code:
                                  move_uploaded_file($bild['tmp_name'][$i], "{$uploadverzeichnis}/{$name}")
                                  OR die (
                      "Bilder konnten nicht gespeichert werden");
                                  
                      chmod("/absoluter pfad/$bildname/$name",0777); 
                      Wieso stellst du beide male chmod an das ende? der Ordner soll doch schon voher nutzbar sein :S

                      EDIT // pack beide urls, die du in diesem ausschnitt verwendest, so auch noch einmal in eine variable und gebe dir diese mit print aus, schau dann ob diese gleich sind.
                      Webdesign und Webentwicklung - Plunix.de

                      Kommentar


                      • #12
                        Also verzeichnisstruktur wie folgt:

                        Code:
                        -bin
                        -cgi-bin
                        -conf
                        -httpdocs
                          -> admin
                          -> bilder
                           ..
                           ..
                           ..
                        Derzeit sieht das script so aus:
                        PHP-Code:
                            // Bilder Upload
                            
                        $uploadverzeichnis"/httpdocs/bilder/events/$bildname";
                            
                        $thumbverzeichnis="/httpdocs/bilder/events/$bildname/thumbs";

                            
                        // Verzeichnisse erstellen
                            
                        if (!is_dir($uploadverzeichnis)){
                            
                        $mask umask(0);
                            
                        mkdir ($uploadverzeichnis,0777);
                            } 
                            if (!
                        is_dir($uploadverzeichnis) && !mkdir($uploadverzeichnis))
                         die (
                        'Uploadverzeichnis '.$uploadverzeichnis.' konnte nicht erstellt werden.<br>'); 
                        das script befindet sich in admin/ und die bilder erklären sich dann von selbst.
                        gebe ich als uploadverzeichnis "../bilder/events/$bildname" an, arbeitet er das script durch und hat angeblich alles erstellt/gespeichert.
                        gebe ich /httpdocs/bilder/events.... an, so gibt er den verzeichnisfehler wenigstens aus.

                        Kommentar


                        • #13
                          @lenni: ich setze damit nicht das verzeichnis auf 777 sondern das bild, damit ich es später evtl noch ändern kann...

                          Kommentar


                          • #14
                            gebe ich /httpdocs/bilder/events.... an, so gibt er den verzeichnisfehler wenigstens aus.
                            Wie bereits gesagt wirst du in einer Hosting Umgebung KEINERLEI Rechte haben ins Root zu schreiben. Was gehen KÖNNTE (weiss aber nicht ob's wirklich geht) wäre es dem Pfad ~ voranzustellen. Damit wäre dann dein Homeverzeichnis gemeint. Imho wird das aber das gleiche sein wie das Voranstellen von $_SERVER['DOCUMENT_ROOT']
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              @jahlives: mit doc root hats geklappt, danke vielmals :-)
                              Zuletzt geändert von susi1600; 21.05.2008, 19:35.

                              Kommentar

                              Lädt...
                              X