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