ZIP entpacken mit Lib von PHPConcept

fanste

Erfahrenes Mitglied
Hi,

Weiß einer, warum es nicht klappt, dass ich mit der oben genannten Lib (Version 2.1) Zipfiles nicht entpacket bekomme?
Das Script bleibt immer beim erstellen eines Ordners hängen, d.h. der Ordner wird erstellt und danach geht nichtsmehr. Irgendwie liegt das glaube ich an den Rechten die der Ordner hat.
Wie bekomme ich es hin, dass die Dateien dennoch in den Ordner kommen?
Ich hab keine Ahnung, wo ich in dieser Lib die Rechte des erstellten Ordners ändern kann.

PHP:
<?php
include('pclzip.lib.php');
$archive = new PclZip('in.zip');
if ($archive->extract(PCLZIP_OPT_PATH, 'data') == 0) {
	die("Error : ".$archive->errorInfo(true));
}
else
{
	echo "erfolgreich entpackt";
}
?>

Hiermit rufe ich die entpacken Funktion auf.
Die Funktion an sich kann ich hier nicht schreiben (ist ziemlich viel).

Könnte es vll auch sein, weil safe mode auf ON ist?
Hier noch die PHP Info

Hoffe ihr könnt mir helfen.

mb fanste
 
Ok. Ich habe das Problem mit den Rechten gelöst bekommen. Jetzt kommt aber das nächste Problem.
Code:
Warning: mkdir(): SAFE MODE Restriction in effect. The script whose uid is 32107 is not allowed to access /home/a4f0fa83/public_html/hpneu/data owned by uid 99 in /home/a4f0fa83/public_html/hpneu/pclzip.lib.php on line 4306

Bin also nicht der Inhaber dieses Ordners/dieser Datei.

Verwende ich dann die Funktion chown() so: chown(ORDNERNAME, '32107'); (ORDNERNAME z.B. data) kommt
Code:
Warning: chown(): Unable to find uid for 32107 in /home/a4f0fa83/public_html/hpneu/pclzip.lib.php on line 4316

Wie bekomme ich es jetzt hin, dass mir der Ordner/die Datei von den Rechten und der uid gehört
 
Hallo!

Das macht Root.
Währe ja noch schöner wenn jeder sich von irgend wem die UID aneignen würde.
Gebe dem Order, in dem PclZip Dateien ablegen bzw. Ordner anlegen soll, ein CHMOD 0777..... dass könnte dein Problem evtl. lösen.
Deine Fehlermeldung zeigt ganz klar dass safee_mode=ON ist..... da hat man halt solche Probleme.

Gruss Dr Dau
 
Leider reicht das Rechteändern nicht aus. Der Ordner data hat 777 und dennoch habe ich ich keinen Zugriff darauf
 
Hmm, merkwürdig.
Hast Du es mal mit Version 2.4 probiert?
Evtl. auch mal auf einem anderen Server getestet?
Wenn ich es richtig sehe, hast Du keine Zugriffsrechte als Root oder Apache?!

Der Code jedenfalls scheint OK zu sein.

Ich könnt mal gucken ob ich es heut abend noch schaffe mal zu testen..... ich habe bisher aber nur eine einzelne Datei gepack.
Hmm, eigentlich blödsinn..... ich kann ja irgend ein anderes Archiv zum entpacken nehmen.
 
Ich glaube das liegt an diesem safe_mode. Auf php.net steht, dass mkdir() Ordner mit dem Eigentümer UID des Apache Servers belegt. Hier ist das die 99. Wenn ich dann per Script auf diesen Ordner zugreifen will, bekomme ich halt den Fehler, dass ich nicht der Eigentümer bin.
Habe gelesen, dass man das mit ftp_mkdir() umgehen kann. Wenn ich aber diese Funktion verwende, kommt dieser Fehler.
Code:
Warning: ftp_mkdir(): Can't create directory: File exists in /home/a4f0fa83/public_html/Benutzer/test.php on line 7
Fehler beim erstellen des Ordners

Das Script dazu
PHP:
<?
$conn_id = ftp_connect("SERVER");

// Open a session to an external ftp site
$login_result = ftp_login ($conn_id, "USER", "PASS");

if(!ftp_mkdir($conn_id,'neutest'))
{
	echo "Fehler beim erstellen des Ordners";
}
else
{
	$fp = fopen('neutest/data.txt','w+');
	fwrite($fp,"test test test test test\n\r\n\r\n\rtest");
	fclose($fp);
	
	mkdir('neutest/test1/',0777);
}
?>
 
Hier ist der Code.
PHP:
<?
function makedir($dirname, $rechte, $ftp_username, $ftp_password, $ftp_host, $ftppfad)
{
	$conn_id = ftp_connect($ftp_host);
	$login_result = ftp_login($conn_id, $ftp_username, $ftp_password);


	if (file_exists($pfad."/".$dirname))
	{
		echo "<br>Ordner [ ".$dirname." ] existiert bereits - wird nicht neu angelegt</div><br>";
	}
	else
	{
		echo "<br>Erstelle Ordner [ ".$dirname." ]<br>";
	    if(!file_exists($ftppfad."/".$dirname))
		{
			if ((!$conn_id) || (!$login_result))
			{
				echo ('Zum FTP-Server konnte nicht verbunden werden<br/>');
			}
			if (ftp_mkdir($conn_id, $ftppfad."/".$dirname))
			{
				ftp_site($conn_id, "CHMOD ".$rechte." ".$ftppfad."/".$dirname);
				echo "<b>Ordner [ ".$dirname." ] mit den Rechten [".$rechte."] erfolgreich erstellt!</b><br>";
			}
			else
			{
				echo "Verzeichnis [ ".$dirname." ] NICHT erstellt!</div><br>";
			}
		}
	}
	return ;
}


makedir('ORDNERNAME','RECHTE','BENUTZERNAME','PASSWORT','SERVER','PFAD_ZUM_HTML_ORDNER');
?>

Wie es funktioniert, dürfe klar sein.

Viel Spaß damit.
 
Zurück