kostenloser Webspace werbefrei: lima-city


is_dir() funzt nicht richtig....

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    klasset

    klasset hat kostenlosen Webspace.

    Also ich hab ein Script erstellt und hab dort, die funktion is_dir() drin, aber diese Funktion hat beim ersten Test nur die letzten 2 Ordner als Ordner erkannt und beim zweiten test erkennt er gar keine Ordner mehr...
    An was liegt das?
    Also, das Script liegt nicht auf diesem Server sondern wo anderst:
    Betriebssystem: Linux 2.4.21-27.0.2.ELsmp
    Apache: 1.3.33 (Unix)
    PHP Versionen: 4.3.11 / 5.0.4
    Perl: 5.8.4
    mySQL Version: 4.0.25-standard


    Script:

    <?php

    $ftp_host = "ftp.*********";
    $ftp_username = "*******";
    $ftp_password = "********";

    $ftp_handle = ftp_connect($ftp_host,21);
    if($ftp_handle <> FALSE)
    {
    if(@ftp_login($ftp_handle, $ftp_username, $ftp_password))
    {
    ftp_pasv($ftp_handle, TRUE);
    $d = dir("../../community/e107_plugins/autogallery/Gallery");
    #echo ftp_nlist($ftp_handle, ftp_pwd($ftp_handle));
    while($datei = $d->read())
    {
    // Zur ?berpr?fung der Datei...
    echo $datei."<br />";
    echo is_dir($datei)."<br />";
    echo ($datei<>".")."<br />";
    echo ($datei<>"..")."<br />";
    // Damit keine Files, oder die Ordner . .. genommen werden...
    if(is_dir($datei)==TRUE AND $datei<>"." AND $datei<>"..")
    {
    $chmod_cmd = "CHMOD 0777 ".$datei;
    if(ftp_site($ftp_handle, $chmod_cmd))
    {
    echo "$datei wurde auf CHMOD 777 gestellt!<br />";
    }
    else
    {
    echo "$datei konnte nicht auf CHMOD 777 gestellt werden!<br />";
    }
    }
    }
    $d->close();
    ftp_quit($ftp_handle);
    }
    else
    {
    echo "Login Fehlgeschlagen!";
    }
    }
    else
    {
    echo "Verbindung Fehlgeschlagen!";
    }
    ?>


    Alle die den Sinn des Scripts wissen wollen: Ich muss alle Ordner in einem Verzeichnis auf CHMOD 777 stellen, da leider die funktion chmod() ind php nicht aktiviert ist, mach ich dies halt ?ber FTP...

    Hat jemand ne L?sung daf?r???

    Oder hat jemand lust das ganze auf Perk umzuschreiben??? (Dann nat?rlich ohne FTP, da ich annehme, dass es in Perl sicher ne chmod funktion gibt...)

    mfg Lukas
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Was gibt:

    echo $datei."<br />";

    denn so aus?

    Ohne die Verzeichnisstruktur zu kennen, kann man da von au?en schlecht helfen ...

    Und bist du sicher, dass chmod() deaktiviert ist? Oder greift nur der Safe-Mode und es ist deinem Script nur erlaubt, die "eigenen" Verzeichniseintr?ge zu "chmoden"? Wie sieht die Fehlermeldung aus?
  4. Autor dieses Themas

    klasset

    klasset hat kostenlosen Webspace.

    echo $datei."<br />";

    gibt den Dateinamen/Ordnernamen aus, damit ich weiss um welche datei was erf?llt...

    Fehler:

    Warning: chmod(): Operation not permitted in /home/schueler/public_html/upload/aktive/index.php on line 23



    <?php

    $ftp_host = "ftp.*********";
    $ftp_username = "*******";
    $ftp_password = "********";

    $ftp_handle = ftp_connect($ftp_host,21);
    if($ftp_handle <> FALSE)
    {
    if(@ftp_login($ftp_handle, $ftp_username, $ftp_password))
    {
    ftp_pasv($ftp_handle, TRUE);
    $d = dir("../../community/e107_plugins/autogallery/Gallery");
    #echo ftp_nlist($ftp_handle, ftp_pwd($ftp_handle));
    while($datei = $d->read())
    {
    // Damit keine Files, oder die Ordner . .. genommen werden...
    if(is_dir($datei)==TRUE AND $datei<>"." AND $datei<>"..")
    {
    $chmod_cmd = "CHMOD 0777 ".$datei;
    if(ftp_site($ftp_handle, $chmod_cmd))
    {
    echo "$datei wurde auf CHMOD 777 gestellt!<br />";
    }
    else
    {
    echo "$datei konnte nicht auf CHMOD 777 gestellt werden!<br />";
    }
    }
    }
    $d->close();
    ftp_quit($ftp_handle);
    }
    else
    {
    echo "Login Fehlgeschlagen!";
    }
    }
    else
    {
    echo "Verbindung Fehlgeschlagen!";
    }
    ?>


    Mit is_file und <> hat es jetzt funktioniert, aber fragt sich wie lange...

    mfg Lukas

  5. echo $datei."<br />";

    gibt den Dateinamen/Ordnernamen aus, damit ich weiss um welche datei was erf?llt...


    Du kleiner Scherzbold!^^ Das ist mir klar. Ich h?tte gerne gewusst, wie so eine Ausgabe von echo $datei aussieht -- also den Wert, den es ausgibt. Ich habe n?mlich den dumpfen Verdacht, dass in $datei kein richtiger Dateiname (mit Pfad) steht, sondern nur ein Name oder irgendwas anderes. is_dir() gibt nur dann TRUE zur?ck, wenn das Verzeichnis auch existiert. is_file() funktioniert ?brigens auch bei Verzeichnissen. Wenn du beide ausschlie?en willst, musst du also nicht extra is_dir() aufrufen.


    Fehler:

    Warning: chmod(): Operation not permitted in /home/schueler/public_html/upload/aktive/index.php on line 23


    chmod() ist zwar aktiviert. Aber dein Script hat keine Rechte, den entsprechenden Verzeichniseintrag zu ?ndern. Versuch mal mit mkdir() ein Verzeichnis zu erstellen. Wenn du das nicht "chmoden" kannst, dann hat dein Hoster kl?glich versagt.



    Beitrag ge?ndert am 28.02.2006 22:27 von alopex
  6. Autor dieses Themas

    klasset

    klasset hat kostenlosen Webspace.

    Also nach l?ngerem rum Probieren funktioniert das immer noch nicht...

    Das Umgebaute Skript:
    $ftp_host = "####";
     $ftp_username = "####";
     $ftp_password = "####";
    
     $ftp_handle = ftp_connect($ftp_host,21);
     if($ftp_handle == TRUE)
     {
      if(@ftp_login($ftp_handle, $ftp_username, $ftp_password))
      {
       ftp_pasv($ftp_handle, TRUE);
       $d = dir("./TEST");//"../../community/e107_plugins/autogallery/Gallery/TEST");
       #echo ftp_nlist($ftp_handle, ftp_pwd($ftp_handle));
       while($datei = $d->read())
       {
        // Zur ?berpr?fung der Datei...
        echo "----Datei: ".$datei."----<br />";
        echo "Ist Datei? ".is_file($datei)."<br />";
        echo "Ist nicht '.'? ".($datei!=".")."<br />";
        echo "Ist nicht '..'? ".($datei!="..")."<br />";
        // Damit keine Files, oder die Ordner . .. genommen werden...
    	clearstatcache();
        if(is_file($datei)==FALSE AND $datei!="." AND $datei!="..")
        {
         $chmod_cmd = "CHMOD 0777 ./TEST/".$datei;
         if(ftp_site($ftp_handle, $chmod_cmd))
         {
          echo "$datei wurde auf CHMOD 777 gestellt!<br />";
    	  echo "--------<br />";
         }
         else
         {
          echo "$datei konnte nicht auf CHMOD 777 gestellt werden!<br />";
    	  echo "--------<br />";
         }
        }
       }
       $d->close();
       ftp_quit($ftp_handle);
      }
      else
      {
       echo "Login Fehlgeschlagen!";
      }
     }
     else
     {
      echo "Verbindung Fehlgeschlagen!";
     }


    Die verzeichnisstruktur sieht so aus:
    -aktive+
           |
           +-index.php (Skript)
           |
           +-TEST-+ (CHMOD 755)
                  |
                  +-test2 (CHMOD 755)
                  |
                  +-test3 (CHMOD 755)
                  |
                  +-test4 (CHMOD 755)
                  |
                  +-test.html (CHMOD 644)
                  |
                  +-test2.php (CHMOD 644)
                  |
                  +-test3.txt (CHMOD 644)


    Die Ausgabe:
    ----Datei: .----
    Ist Datei?
    Ist nicht '.'?
    Ist nicht '..'? 1
    ----Datei: ..----
    Ist Datei?
    Ist nicht '.'? 1
    Ist nicht '..'?
    ----Datei: test3----
    Ist Datei?
    Ist nicht '.'? 1
    Ist nicht '..'? 1
    test3 wurde auf CHMOD 777 gestellt!
    --------
    ----Datei: test2----
    Ist Datei?
    Ist nicht '.'? 1
    Ist nicht '..'? 1
    test2 wurde auf CHMOD 777 gestellt!
    --------
    ----Datei: test4----
    Ist Datei?
    Ist nicht '.'? 1
    Ist nicht '..'? 1
    test4 wurde auf CHMOD 777 gestellt!
    --------
    ----Datei: test.html----
    Ist Datei?
    Ist nicht '.'? 1
    Ist nicht '..'? 1
    test.html wurde auf CHMOD 777 gestellt!
    --------
    ----Datei: test.txt----
    Ist Datei?
    Ist nicht '.'? 1
    Ist nicht '..'? 1
    test.txt wurde auf CHMOD 777 gestellt!
    --------
    ----Datei: test2.php----
    Ist Datei?
    Ist nicht '.'? 1
    Ist nicht '..'? 1
    test2.php wurde auf CHMOD 777 gestellt!
    --------


    Kann mir jemand helfen?

    mfg Lukas
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!