PHP5: Innerhalb Klassenmethode kein Dateisystem?

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

  • PHP5: Innerhalb Klassenmethode kein Dateisystem?

    Mein Skript befindet sich in F:\php\abc und sieht so aus:

    PHP-Code:
    class core
    {
            ...
        public function 
    core_debug_make($mode 0)
        {
                    ...
            switch(
    $mode)
            {
                            ...
                case 
    3:
                    
    readdir('./');
                    
    mkdir("logging"0755);
                             ...            
            }
            return 
    true;
        }    

        
        public function 
    __destruct()
        {
                    ...
            
    $this->core_debug_make(3);
                    ...
        }

    Das Problem, das laut PHP-Entwickler kein Bug sein soll, sondern irgendetwas anderes, ist dass wenn innerhalb des Objekts die Methode core_debug_make mit dem Parameter 3 aufgerufen wird, mkdir("logging") zwar funktioniert, der Ordner aber nicht in F:\php\abc landet, sondern irgendwo, ich weiß nicht wo auf sogar einer anderen Partition (ich hab Ordner schon auf D:\ gefunden)? Momentan landen sie alle gerade im Ordner des Programms AutoHotkey (?!).

    Ich hab hier PHP 5.1.2, Windows XP SP1 mit NTFS Filesystem.

    Kann man das irgendwie erklären bzw. beheben?

    Vielen Dank

  • #2
    hi,

    die grosse preisfrage is eher, _wo_ du deine klasse instanzierst bzw. wo dein skript im browser aufgerufen wird, das dann letztlich die klasse instanziert.

    relativ davon gesehen, wird dann auch der ordner loggin erstellt.

    am besten setzt du den pfad absolut, dann is ruhe.

    Kommentar


    • #3
      die grosse preisfrage is eher, _wo_ du deine klasse instanzierst bzw. wo dein skript im browser aufgerufen wird, das dann letztlich die klasse instanziert.
      In dem Ordner (F:\php\abc) ist die index.php Datei, die dann auch dort die Klasse instanziiert.

      relativ davon gesehen, wird dann auch der ordner loggin erstellt.
      Wovon denn genau relativ? Vom Browser kann es ja nicht sein, da in den Verzeichnissen keine installiert sind und vom Programm AutoHotkey (Hot-Key Überwachungs-Tool) würde ich es sehr, unwahrscheinlich halten. Und wenn du die Parameter meinst, das wäre dann http://127.0.0.1/abc/ (also real F:\php\abc).

      am besten setzt du den pfad absolut, dann is ruhe.
      Angenommen, dass das nicht möglich sein wird...
      Zuletzt geändert von Marscel; 14.12.2005, 16:16.

      Kommentar


      • #4
        Guck mal, ob es dir was bringt, mit $_SERVER['PHP_SELF'] den aktuellen Pfad beim Ordner erstellen auszulesen, vielleicht auch HTTP_HOST oder DOCUMENT_ROOT. Mit PHP_SELF und HTTP_HOST könntest du dann auch absolute Dateinamen benutzen
        Wahrheit ist unser kostbarster Besitz. Lasst uns sparsam mit ihr umgehen. Mark Twain

        Kommentar


        • #5
          Relativ zum Browser? Was redest du denn? PHP läuft nicht im Browser!
          Folgendes geht immer und sollte deiner Lösung entsprechen:
          PHP-Code:
          $dir dirname($_SERVER['PHP_SELF']).dirname($_SERVER['PHP_SELF']); 
          echo 
          $dir// zum Debuggen
          mkdir($dir.'/logging'); 
          Woher hast du dein PHP denn, selbst kompiliert?
          Zuletzt geändert von onemorenerd; 14.12.2005, 17:16.

          Kommentar


          • #6
            Hatten wir kürzlich schon mal. Ist ein spezifisches (Fehl-?)verhalten in Destruktoren.
            http://www.php-resource.de/forum/sho...threadid=62721

            Kommentar


            • #7
              Relativ zum Browser? Was redest du denn? PHP läuft nicht im Browser!
              Ist mir schon klar, nur jemand vor mir schrieb "wo dein Skript im Browser".

              Woher hast du dein PHP denn, selbst kompiliert?
              War ein vorkompilierter Windows Snapshot, auf den irgendwo auf der php.net Seite hingewiesen wird.

              Hatten wir kürzlich schon mal. Ist ein spezifisches (Fehl-?)verhalten in Destruktoren.
              Vielen Dank, das Problem ist gelöst!

              Kommentar

              Lädt...
              X