php_rar.dll -> Apache Problem

Hallo …

Umgebung:
Win 2K Adv. Server
MySQL 5
Apache 2.2.4
Open SSL 0.9.8d
PHP 5.2.1

Ich will mit PHP rar files entpacken. Funktioniert auch. Nur das Problem liegt im schließen der File. Wenn sie Vollkommen entpackt ist, dann lässt sie der apache trotz rar_close($filename) nicht los.

Einfachster test hierfür ist wenn ich versuche die File zu löschen.
Zugriff nicht möglich.
Ich beende apache.
Löschen möglich!

Script ist exakt das was auf php.net unter der function rar::extract steht!

<?php /* example by Erik Jenssen aka erix */<br />
$filename = "foobar.rar";
$filepath = "/home/foo/bar/";

$rar\_file = rar\_open($filepath.$filename);
$list = rar\_list($rar\_file);
foreach($list as $file) {
 $entry = rar\_entry\_get($rar\_file, $file);
 $entry-\>extract("."); // extract to the current dir
}
rar\_close($rar\_file);

?\> 

Ich benutze das Script in abgewandelter form um meine rar archive zu entpacken. Mit zip funktioniert es wunderbar. Aber bei rar, dadurch das für jede file ne neue instanz von apache gestartet wird, ohne die alte zu schließen (was mit rar_close($filename) geschehen sollte), habe ich bei der 2. file einen vollgelaufenen arbeitsspeicher!

Was mach ich falsch? Habe die aktuellste php_rar.dll, die extension ist korrekt regestiert und ja auch nutzbar.

Hoffe wer hat ne idee.

Grüße vom digi

Hallo …

Was mach ich falsch? Habe die aktuellste php_rar.dll, die
extension ist korrekt regestiert und ja auch nutzbar.

Was heißt die aktuellste Version? Ist dies eine offizielle/stable Version oder ein CVS snapshot? Woher?

Hast du das schon gesehen:
http://pecl.php.net/bugs/bug.php?id=10652&edit=1

Ich habe den Link von php.net.
http://snaps.php.net/win32/PECL_STABLE/
Ich hab drauf geklickt ging aber nicht. Also bin ich ein verzeichnis runter und habe mir die letzte version gesaugt. Und zwar:
http://snaps.php.net/win32/pecl5.2-win32-latest.zip

Habe aber auch andere probiert.
Zu entpacken gehts. Aber leider nur bis der Arbeitsspeicher voll ist weil wie gesagt immer wieder ne neue instanz von apache gestartet wird.

Gibts da nich ne lösung dafür???

Kann mich doch nich hinsetzen und den fehler in dem Source CPP raus machen… Ich wollt damit eigentlich zeit sparen und nich tage damit zubringen.

Grüße :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo

Eine Möglichkeit wäre, mit system() auf WinRAR zuzugreifen. Unter Linux hab ich das schon ausprobiert (da wars gzip oder so), weil es mir einfacher als die PHP-eigenen Packbefehle erschien.

Johannes