relative Pfade - PHP5 anders?

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

  • relative Pfade - PHP5 anders?

    Hallo,

    ich habe ein Script geschrieben welches in einem
    Verzeichnis das allerdings eine Ebene über meinem scriptpfad
    liegt alle Dateien auslesen soll.

    Ordner-Hierarchie:

    /mydir/admin/script.php
    /mydir/images/bild1.jpg

    PHP-Code:
      $root_dir "../images";
      
    $handle opendir($root_dir);
      while ( 
    $object readdir($handle) )
        {
        ...
        } 
    Das ganze hat komischerweise bis mein Provider 2 (=1+1)
    auf PHP5 umgestellt hat, so noch funktioniert.
    Nun geht auch ein $root_dir="/mydir/images" auch nicht mehr.
    Hat sich hier bei PHP5 was geändert?

    Bzw. wie kann ich es anders lösen? Problem ist dass ich mein
    script in "/mydir/admin" liegen lassen will (aus Sicherheitsgründen).
    "mydir" sollte auch möglich sein, denn ich will meine Anwendung
    so gestalten, dass Sie nicht nur im root-dir des Webservers laufen soll, sondern auch aus unterverzeichnissen.

    Wäre für Hilfe dankbar!

    Gruss,
    Stefan
    Gruss,
    Stefan

  • #2
    Re: relative Pfade - PHP5 anders?

    Original geschrieben von Beyond
    Nun geht auch ein $root_dir="/mydir/images" auch nicht mehr.
    Das dürfte auch vorher nicht gegangen sein - oder liegt mydir etwa direkt im Wurzelverzeichnis des Servers?


    Und das "geht nicht" keine brauchbare Problembeschreibung ist, sollte eigentlich inzwischen auch dem letzten Deppen klar sein.
    Also, welche Fehlermeldungen bekommst du?
    (error_reporting = E_ALL, Fehlerausgabe aktiviert, ggf. Auszug Error-Log ...)
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hi Wahsaga,

      wow, Du bist fix!

      Sorry, das mit dem error_reporting wusste ich nicht, bin halt doch wohl einer der letzten Deppen
      Hier die Ausgabe:
      Code:
      Root: ../images
      Hndl: Resource id #9
      
      Warning: readdir(): 9 is not a valid Directory resource in /homepages/35/d0815/htdocs/pcm/admin/admin_images.php on line 75
      
      Notice: Undefined index: save in /homepages/35/d0815/htdocs/pcm/admin/admin_images.php on line 128
      
      Notice: Undefined index: delete in /homepages/35/d0815/htdocs/pcm/admin/admin_images.php on line 137
      
      Warning: Missing argument 2 for query() in /homepages/35/d0815/htdocs/pcm/sql_includes.php on line 43
      
      Warning: opendir(/pcm/images) [function.opendir]: failed to open dir: No such file or directory in /homepages/35/d0815/htdocs/pcm/admin/admin_images.php on line 254
      
      Warning: readdir(): supplied argument is not a valid Directory resource in /homepages/35/d0815/htdocs/pcm/admin/admin_images.php on line 255
      
      Notice: Undefined variable: paths in /homepages/35/d0815/htdocs/pcm/admin/admin_images.php on line 259
      
      Notice: Undefined variable: paths in /homepages/35/d0815/htdocs/pcm/admin/admin_images.php on line 259
      
      Warning: Missing argument 4 for write_select2str() in /homepages/35/d0815/htdocs/pcm/php_includes.php on line 155
      
      Warning: reset() [function.reset]: Passed variable is not an array or object in /homepages/35/d0815/htdocs/pcm/php_includes.php on line 157
      
      Warning: Variable passed to each() is not an array or object in /homepages/35/d0815/htdocs/pcm/php_includes.php on line 160
      "mydir" aus der ersten post ist im konreten fall "pcm" und liegt im
      root (wie man hier sehen kann). Mein aufrufendes Script heisst
      "admin_images.php" und liegt in "/pcm/admin/".

      Anscheinend hat php ein problem mit dem dir.
      Gruss,
      Stefan
      Gruss,
      Stefan

      Kommentar


      • #4
        Original geschrieben von Beyond
        Mein aufrufendes Script heisst "admin_images.php" und liegt in "/pcm/admin/".
        Gut, also würde ../images von dort aus eins runtergehen und dann in images, also effektiv
        /homepages/35/d0815/htdocs/pcm/images/
        Ist das der korrekte Pfad, den du meinst?

        Code:
        Root: ../images
        Hndl: Resource id #9
        
        Warning: readdir(): 9 is not a valid Directory resource [...]
        Das mit der Ressource-ID sieht eigentlich OK aus, damit müsste das Öffnen des Verzeichnishandles zum Lesen eigentlich geklappt haben.

        Zeige mal etwas(!) Code von der betreffenden Stelle.

        Evtl. hilft es ja, vorher mal realpath auf den anvisierten Verzeichnisnamen anzuwenden.


        Und wenn du in [code] oder [php]-Tags postest, füge bitte manuell Umbrüche ein, damit man nicht meterweit querscrollen muss - siehe auch Regeln.
        Zuletzt geändert von wahsaga; 15.01.2007, 10:17.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Danke erstmal!

          1. ja. den Pfad meine ich!

          2. Weiterer Code. Ok, Du hast es so gewollt
          denn komplizierterweise suche ich darin auch noch alle
          unterverzeichnisse durch.
          ich schreib mal noch in den Code ein paar Comments zur
          Erläuterung.
          Wie gesagt, die ganze Routine hat vor kurzem noch wunderbar
          funktioniert. Ich erstelle sogar Thumbs von allen Bildern für gif,png
          und jpg. Wer Interesse an dieser Routine hat ->melden.

          PHP-Code:
            // schleife hauptdir
            
          while ( $object readdir($handle) )
               {
               if (
          $object != "." && $object != ".." )  // die wollen wir ja nicht
                
          {
                
          $path ""// Pfad zurücksetzen
                
                // get files of subdir
                
          if (is_dir($root_dir."/".$object)) // schauen ob es ein dir ist
                 
          {
                 
          $dir $root_dir ."/"$object
                 
          $subhandle opendir($dir); //handle des subdir
                
               // schleife subdir            
                
          while ( $subobject readdir($subhandle) )
                  {
                   if (! 
          image_exists ($object$subobject)) // siehe unten 
                    
          {
                    if(
          $subobject != "." && $subobject != ".." 
                      {
                      
          $path trim($object);
                      
          $file trim($subobject);
                      
          // in db eintragen, wenn es kein thumb-bild ist.
                      
          if (! eregi ("[_thumb]",$file)) $sql "INSERT INTO ".   TABLE_IMAGES ." (image_name, image_info, image_date,  image_path, image_file, image_views) 
                            VALUES ('
          $name' , '$info', now(), '$path', '$file', 3 )";
                      
          $res $db->query ($sql);
                                  }
                    }
                  }       
               
                 }
                  
                 
          $ext substr ($file, -3);
                 if (! 
          image_exists ($path$object) AND is_file($object))
                  {
                  
          $sql "INSERT INTO "TABLE_IMAGES ." (image_name, image_info, image_date, image_path, image_file, image_views) 
                          VALUES ('
          $name' , '$info', now(), '$path', '$object', 0 )";
                  
          $res $db->query ($sql);
                  }
                   
               }
               
          closedir ($handle);
               } 

            
          // prüft, ob bild schon in db
            
          function image_exists ($path$file)
              {
              global 
          $db$config;
              
          $file trim($file);
              
          $path trim($path);
              
          $sql "SELECT * FROM "TABLE_IMAGES ." WHERE image_path='$path' AND image_file='$file' ";
              
          $query $db->query ($sql);
              
          $res = (mysql_num_rows($query) > ) ? TRUE FALSE;
              return 
          $res;
              } 
          Hoffentlich wird das nicht zu kompliziert. Ich weiss, wie schwer es ist,sich in fremden code reinzudenken.

          Stefan
          Gruss,
          Stefan

          Kommentar


          • #6
            ... noch kurz zum Verständnis des Codes:

            In "../images/" sollen alle unterverzeichnisse durchlaufen werden
            nach Files, die noch nicht in der Datenbank gespeichert sind.
            Deshab die 2 Schleifen (1te für alle Dirs in "/images/", 2te für
            die Files im Subdir).
            Gruss,
            Stefan

            Kommentar

            Lädt...
            X