phpbar.de logo

Mailinglisten-Archive

[php] __destruct nicht bei mod_php5, aber bei php5 als cgi?

[php] __destruct nicht bei mod_php5, aber bei php5 als cgi?

Andi Voss andi at andis.mine.nu
Mit Apr 25 10:42:58 CEST 2007


Hi Sascha,

Sascha Grossenbacher wrote:
> Doch, ausgeführt wird der Destruktor vermutlich schon, aber es gibt einige kleine Probleme mit Destruktoren bei globalen Objekten :)
> Diese werden erst sehr spät ausgeführt, zu diesem Zeitpunkt "befindet" sich PHP nicht mehr in deinem Verzeichnis sondern im Server Root, findet also vermutlich die Datei nicht mehr.
> Siehe: http://ch2.php.net/manual/de/language.oop5.decon.php#71107

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" );
}

Mit echo, print_r usw. kann ja hier nicht mehr gearbeitet werden, da der 
  output buffer zu diesem Zeitpunkt schon geflusht ist, daher hab ich 
zum Testen ein Verzeichnis erstellt.

Also mal so generell gefragt:
Funktioniert __destruct mit mod_php im Allgemeinen, also setzt Ihr das 
ein? Ich meine, wenn mit dem Destruktor z.B. Datenbankverbindungen 
geschlossen werden, kann man schlecht nachvollziehen, ob das wirklich 
gemacht wurde - oder?
Wenn ja liegt der Fehler bei mir, wovon ich mal ausgehe (aber wo?).

Wenn nein - BUG? Hinweise?

Ich habe jetzt PHP 5.2.0 und PHP 5.2.1 auf zwei unterschiedlichen 
Systemen getestet (Slackware(Apache 2.2.0) und Ubuntu(Apache 2.0.55)), 
beide male PHP selber kompiliert mit:
'./configure' \
'--with-apxs2=/usr/bin/apxs2' \
'--enable-force-cgi-redirect' \
'--enable-fastcgi' \
'--enable-sqlite-utf8' \
'--enable-soap' \
'--with-tidy' \
'--with-mysql=/usr' \
'--with-mysqli=/usr/bin/mysql_config' \
'--enable-ftp' \
'--with-zlib-dir' \
'--enable-zip' \
'--with-interbase=/usr/lib/firebird2' \
'--with-gettext' \
'--enable-versioning' \
'--enable-sockets' \
'--enable-pcntl' \
'--with-openssl=/usr' \
'--with-iconv' \
'--enable-mbstring=all' \
'--enable-mbregex' \
'--enable-bcmath' \
'--enable-shmop' \
'--with-curl' \
'--with-kerberos' \

> 
> Gruss Sascha

Gruss Andi


php::bar PHP Wiki   -   Listenarchive