Problem mit copy Funktion

brainsucker

Erfahrenes Mitglied
Hallo zusammen,

ich grübel über folgendes Problem:

Ich möchte aus einem Verzeichnis alle Dateien auslesen und in unterverzeichnis kopieren. (nicht moven!) Ich dachte, ich nehm einfach die Copy Funktion hierfür. Nehmen wir an Ordner 1 in dem die Files liegen ()so die Quelle heisst Haus. Unterhalb des Ordners Haus liegt nun ein Ordner "Badezimmer" in den sollen alle Dateien aus dem Ordner Haus hineinkopiert werden. Mein Coding:

$meinPfad = "Haus";
$zielfad = "Haus/Badezimmer"
PHP:
if($Verzeichniszeiger = opendir($meinPfad)) 
{
    while($Datei = readdir($Verzeichniszeiger))
    {
	copy($Datei, "$zielpfad");
	}}

ergibt folgende Fehlermeldungungen:

Warning: copy(.) [function.copy]: failed to open stream: Permission denied in
Warning: copy(..) [function.copy]: failed to open stream: Permission denied in
Warning: copy(070204-Handball WM Autocorso-mw0017.JPG) [function.copy]: failed to open stream: No such file or directory in

usw


Die Ordnerberechtigungen sind allesamt 0777
Wenn ich $Datei ausgeben will, macht er dies auch einwandfrei


Abhilfe?
 
PHP:
if($Verzeichniszeiger = opendir($meinPfad)) 
{
while($Datei = readdir($Verzeichniszeiger))
{
if(is_file($Datei)) {
copy($meinPfad . $Datei, $zielpfad . $Datei);
}
}}

Versuch es einmal so.

Die Fehler beruhen darauf, dass er sich im falschen Ordner befindet (Geht vom Root Directory aus) bzw. du versuchst die Ordner Angaben "." und ".." zu kopieren.
 
Zuletzt bearbeitet:
PHP:
<?php
if($Verzeichniszeiger = opendir($meinPfad)){
	while($Datei = readdir($Verzeichniszeiger)){
		if(is_file($Datei)){
			copy($meinPfad.$Datei, $zielpfad.$Datei);
			echo "$meinPfad$Datei wurde nach $zielpfad$Datei kopiert.<br>\n";
		}
	}
}
?>

Versuche es mal damit, bei mir funktioniert es so einwandfrei. Good Luck.

EDIT: oops da war einer schneller :( ;)
 
Zuletzt bearbeitet:
hallo und schon mal danke für die Hilfe,


leider klappt es noch immer nicht. Er rutscht mir einfach nicht in die if(is_file) prüfung rein. Was kann ich noch tun ?
 
Achso vielleicht hilft die Info dass wenn ich ein echo $Datei innerhalb der while Schleife reinsetze, die Dateinnamen korrekt ausgegen werden....
 
Vermutlich fehlt nur ein Schrägstrich:
PHP:
if( $Verzeichniszeiger = opendir($meinPfad) ) {
	while( $Datei = readdir($Verzeichniszeiger) ) {
		if( is_file($Datei) ) {
			copy($meinPfad.'/'.$Datei, $zielpfad.'/'.$Datei);
		}
	}
}
 
So ich hab es jetzt immerhin hinbekommen dass die Files kopiert werden. Allerdings, bekomm ich trotzdem noch eine Fehlermeldung ausgeworfen.

Hier mein Code:

PHP:
if($Verzeichniszeiger = opendir($Pfad)) 
		{
			while($Datei = readdir($Verzeichniszeiger))
			{
				if($Datei != "." && $Datei != "..")
					{
					copy($Pfad.$Datei, $thumbFolder.$Datei);
					}		
			}
		}

Die Fehlermeldung:

Warning: copy(../galerien/test/thumbs) [function.copy]: failed to open stream: Permission denied in...

Die Files wurden aber trotzdem alle ordnungsgemäß kopiert. Wie bekomm ich nun die Fehlermeldung weg ?
 
Versuch mal
PHP:
if($Datei != "." && $Datei != "..")
durch
PHP:
if(is_file($Datei))
zu ersetzen.

Ich vermute, er versucht das Unterverzeichnis selbst auch mitzukopieren.
 
PHP:
if(is_file($Datei))

ergibt bei mir immer false, daher kopiert er mir dabei rein gar nichts. Hab das Problem bisher nicht lösen können, brauche also immer noch Hilfe :-)
 
hast du mal probiert, das entsprechende verzechnis via php auszugeben? um zu sehen, ob überhaupt was in dem ordner ist?
 
Zurück