Mailinglisten-Archive |
Hi, On Wed, Apr 25, 2007 at 10:42:58AM +0200, Andi Voss wrote: > > Das hatte ich auch gelesen und testweise mal mit mkdir ein Verzeichnis > erstellt in __destruct, mit dem Ergebnis, dass mit mod_php kein > Verzeichis erstellt wird und mit PHP als CGI im Webroot das > entsprechende Verzeichnis erscheint. > > function __destruct() > { > // das sollte ja jetzt im Webroot erstellt werden, egal > // ob PHP als CGI oder PHP als mod_php > // Ergebnis: Es wird nur bei PHP als CGI ein Verzeichnis > // im Webroot erstellt > mkdir( "Testverzeichnis" ); > } Hats du mal getestet WO dein Script "ist" wenn der Destruktor mit mod_php aufgerufen wird? Bei mir (kleiner Test auf 2 Maschinen) ist das / und da darf ein Apache-User hoffentlich auch kein Verzeichnis anlegen. Das bedeutet auch, dass man wohl fuer file-Operationen im Destruktor immer einen absoluten Pfad zum Ziel verwenden sollte, den kann man sich ja vorher als Eigenschaft definieren. Probier mal folgendes kleine Test-Script, das klappt bei mir problemlos, loeschen und anlegen. --------------------------------schnipp----------------------------- <?php error_reporting(E_ALL); class MyDirDestruct { function __construct() { $this->name = dirname(__FILE__) . '/' . "MyDir"; } function __destruct() { echo "Im Destruktor\n"; if (is_dir($this->name)) { echo "Versuche das Verzeichnis zu loeschen:\n"; if (rmdir($this->name) === FALSE) { echo "Fehler, konnte " . $this->name . " nicht loeschen!\n"; echo "Befinde mich aktuell in '" . `pwd` . "'\n"; } else { print "Klappt, " . $this->name . " wurde geloescht!\n"; } } else { echo "Versuche das Verzeichnis anzulegen:\n"; if (mkdir($this->name) === FALSE) { echo "Fehler, konnte " . $this->name . " nicht anlegen!\n"; echo "Befinde mich aktuell in '" . `pwd` . "'\n"; } else { print "Klappt, " . $this->name . " wurde angelegt!\n"; } } } } $obj = new MyDirDestruct(); ?> --------------------------------schnapp----------------------------- Gruss Jens
php::bar PHP Wiki - Listenarchive