Script funktioniert nicht mehr

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

  • Script funktioniert nicht mehr

    Hallo,
    nach einem Serverumzug beim Provider funktionieren
    einige Scripte nicht mehr.
    Liegt es eventuell an 'exec', safe mode ist aber off.

    Nachfolgendes Script gibt in einem Chat eine Liste
    der User aus, die gerade online sind. Diese sind
    im Verzeichnis 'userlist' als Datei 'xxxx.php' zu finden.

    Wie kann ich das anders erzeugen?

    PHP-Code:
    <?
    exec("find userlist/ -amin 1 -o -amin 0",$retAr);
    $numusers = sizeof($retAr);
    for ($i=0;$i<$numusers;$i++)
        if ($retAr[$i] != "")
    {
    $aus .= " ".ereg_replace("userlist/","",$retAr[$i])." - ";
    }
    ?>

    Diese Online Liste wird alle 20 Sekunden durch einen
    HTML Refresh neu aufgerufen.

    Gruss
    Heiner
    Zuletzt geändert von Heiner; 24.07.2003, 15:46.

  • #2
    könnte es an einer alten php-version liegen?
    Signatur-Text ...

    Kommentar


    • #3
      nimm mal nen absoluten pfad.

      also nicht userlist/xy

      sondern z. B.

      /var/www/userlist/xy
      tata
      moqui

      [COLOR=red]Ich will keine unaufgeforderten Mails über PHP Fragen. Es gibt ein Forum hier! Und ich bin nicht Scripter für jeden, der mir ne Mail schreibt![/COLOR]

      Kommentar


      • #4
        Hallo,

        PHP ist Version 4.3.1

        Die Angabe als absoluter Pfad hat auch nicht funktioniert.

        Gruss
        Heiner

        Kommentar


        • #5
          Vielleicht darf auf dem neuen Server der Webuser kein find ausführen?
          Steht denn was in $retAr ? Und wenn ja: was?

          Oder nimm einfach 'dir'
          http://de.php.net/manual/de/function.readdir.php
          ist auch schöner, als mit nem exec
          Zuletzt geändert von Konrad; 24.07.2003, 18:37.
          Konrad

          In a world without walls and fences, who needs Windows and Gates ?
          (Sun Microsystems)

          Kommentar


          • #6
            Hallo,
            vielen Dank, habe es umgeschrieben, jetzt läuft es
            wieder. Schon merkwürdig das es auf dem neuen
            Server nicht lief.

            PHP-Code:
            $handle=opendir('userlist');
            while (
            $file readdir ($handle)) {
            if (
            $file != "." && $file != ".." && $file != "") {
            $file ereg_replace(".php","",$file);
            $aus .= " ".$file." - ";
            }
            }
            closedir($handle); 
            Kann man die Ausgabe eventuell noch alphabetisch
            sortieren?

            Gruss
            Heiner

            Kommentar


            • #7
              Erst alles in ein Array lesen, dann sorten, dann Dein $aus bauen

              Wie isses hiermit?

              PHP-Code:
                <?php 
                  
              if (!ereg('/$'$HTTP_SERVER_VARS['DOCUMENT_ROOT']))
                    
              $_root $HTTP_SERVER_VARS['DOCUMENT_ROOT'].'/';
                  else
                    
              $_root $HTTP_SERVER_VARS['DOCUMENT_ROOT'];
                  
                  
              $d = @dir($_root.$mein_dir);
                  if (
              $d
                  
              //sort of dir entries by Konrad
                  //-----------------------------
                  
              {
                    while (
              false !== ($entry $d->read())) {
                      
              $aryEntry[] = $entry;
                    }
                    
              natcasesort($aryEntry);
                    foreach( 
              $aryEntry as $entry ){
                  
              //-----------------------------
                      
              if (is_file($_root.$mein_dir.$entry))
                      {
                  
              $file ereg_replace(".php","",$entry);
                  
              $aus .= " ".$file." - ";
                      }
                    }
                    
              $d->close();
                  }
                  else
                  {
                    
              $errors[] = "Verzeichnis nicht vorhanden";
                  }
                
              ?>
              Konrad

              In a world without walls and fences, who needs Windows and Gates ?
              (Sun Microsystems)

              Kommentar


              • #8
                Vielen Dank!

                Gruss
                Heiner

                Kommentar


                • #9
                  Hallo,
                  nun hat sich ein weiteres Problem eingeschlichen,
                  das Script funktioniert jetzt, jedoch wurde beim
                  ursprünglichen Script
                  PHP-Code:
                  <?
                  exec("find userlist/ -amin 1 -o -amin 0",$retAr);
                  $numusers = sizeof($retAr);
                  for ($i=0;$i<$numusers;$i++)
                      if ($retAr[$i] != "")
                  {
                  $aus .= " ".ereg_replace("userlist/","",$retAr[$i])." - ";
                  }
                  ?>
                  mittles amin ermittelt, wann auf diese Datei zuletzt
                  zugegriffen wurde und diese aufgelistet.

                  (-amin Minuten
                  Findet Dateien, auf die vor Minuten zugegriffen wurden. Um bspw. alle
                  Dateien zu finden, deren Zugriff vor 2 bis 8 Minuten geschah, können
                  die Angaben kombiniert werden: "-amin +2 -amin -8". )(aus http://www.linuxfibel.de/file+dir.htm)

                  Das ergibt jetzt ein Problem.
                  Ist es mit php auch möglich den letzten Zugriff zu ermitteln?
                  Ich habe trotz Recherchen nichts dazu gefunden.

                  Gruss
                  Heiner

                  Kommentar


                  • #10
                    klaro

                    http://de.php.net/manual/de/function.fileatime.php
                    Konrad

                    In a world without walls and fences, who needs Windows and Gates ?
                    (Sun Microsystems)

                    Kommentar


                    • #11
                      Hallo,
                      danke schön, ich habe leider Probleme das hier einzubauen:
                      PHP-Code:
                      $handle=opendir('userlist');
                      while (
                      $file readdir ($handle)) {
                      if (
                      $file != "." && $file != ".." && $file != "") {
                      $file ereg_replace(".php","",$file);
                      $aus .= " ".$file." - ";
                      }
                      }
                      closedir($handle); 
                      Könnte mit hier jemand eine Anregung geben?

                      Gruss
                      Heiner

                      Kommentar


                      • #12
                        Steht doch im ersten beispiel auf der Man-Page:

                        PHP-Code:
                        $handle=opendir('userlist');
                        while (
                        $file readdir ($handle)) {
                        if (
                        $file != "." && $file != ".." && $file != "") {
                        $file ereg_replace(".php","",$file);
                        $aus .= " ".$file." (".visita_ultima($file"E2").") - ";
                        }
                        }
                        closedir($handle);

                        function 
                        visita_ultima($conjuto$precision)
                        {
                        // $conjuto ... (no remote) filename
                        // $precision ... type of output
                        // - "D" ... days ago
                        // - "S" ... seconds ago
                        //
                        // - "E1" ... return DD MM YYYY [hh:mm:ss] 
                        // - "E2" ... return DD MM YYYY
                        //---------------------------------------------------------

                        $lastvisit filectime($conjuto); 
                        $currentdate date('U');
                        $difference $currentdate $lastvisit

                        if (
                        $precision=="D")
                        $aviso=intval($difference/84600);
                        elseif (
                        $precision=="S"
                        $aviso=$difference;
                        elseif (
                        $precision=="E1")
                        $aviso=date('d.m Y [G:i:s]',$lastvisit);
                        elseif (
                        $precision=="E1")
                        $avisodate('d.m Y',$lastvisit);

                        return 
                        $aviso;

                        Konrad

                        In a world without walls and fences, who needs Windows and Gates ?
                        (Sun Microsystems)

                        Kommentar


                        • #13
                          Hallo,
                          es sollten nur die Dateinamen aufgelistet werdet,
                          die nicht älter als 60 Sekunden sind.

                          In Deinem Beispiel werden alle Namen mit letztem
                          Zugriffsdatum aufgeführt?

                          Ich versuche es weiter.

                          Gruss
                          Heiner

                          Kommentar


                          • #14
                            Auf die Schnelle, aber nicht getestet:

                            PHP-Code:
                            $handle=opendir('userlist');
                            while (
                            $file readdir ($handle)) {
                                if (
                            $file != "." && $file != ".." && $file != "") {
                                
                            $file ereg_replace(".php","",$file);
                                if( 
                            test_actime($file) <= 60 )
                                    
                            $aus .= " ".$file." - ";
                                }
                            }
                            closedir($handle);

                            function 
                            test_actime($file){
                                
                            $lastvisit filectime($file); 
                                
                            $currentdate date('U');
                                
                            $difference $currentdate $lastvisit

                            return 
                            $difference;

                            Konrad

                            In a world without walls and fences, who needs Windows and Gates ?
                            (Sun Microsystems)

                            Kommentar


                            • #15
                              Hallo,
                              keine Ausgabe. Habe mehrere Sachen ausprobiert, es ist
                              jedoch nicht einmal möglich eine einfache Ausgabe innerhalb
                              der Schleife mit filectime() zu bekommen.

                              Als Test

                              PHP-Code:
                              $aus . =time(); 
                              funktioniert , ich bekomme einen Unix Timestamp hinter jedem
                              Dateinamen ausgegeben, natürlich den Gleichen.

                              PHP-Code:
                              $aus . =filectime($file); 
                              jetzt kommt gar keine Ausgabe mehr, auch nicht die Dateien selber.
                              Habe auch versucht:

                              $aus . =filectime("$file");
                              $aus . =filectime(" .$file. ");

                              Variable vorher festgelegt und auch die einfachen ' benutzt.
                              Nichts zu machen.

                              Die 'Änderung' der Datei, bzw. der 'Zugriff' wird durch touch() erzeugt.

                              Gruss
                              Heiner

                              Kommentar

                              Lädt...
                              X