PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |
|

05-09-2002, 15:29
|
andik2000
Registrierter Benutzer
|
|
Registriert seit: Jan 2002
Beiträge: 810
|
|
Verzeichnisse kopieren
Schönen guten Tag.
Kann ich denn mit PHP einen ganzen Ordner samt Unterordner von einem Verzeichnis ins andere kopieren. Wohlgemerkt kopieren - nicht verschieben.
Wie lautet denn dafür der Befehl, falls das so einfach mit einem Befehl machbar ist?
Gruß, Andi
|

05-09-2002, 15:34
|
faustus
Registrierter Benutzer
|
|
Registriert seit: May 2002
Ort: Ingolstadt
Beiträge: 188
|
|
Es gitb zwei Lösungsansätze,
Alles in Arrays einlesen und wonaders zurückspeichern, oder den FTP Befehlssatz benutzen. Den findest du im php buch unter Umagang mit dateien ...
__________________
Gruß,
faustus
____________________
Programmieren ist manchmal genauso logisch, wie die Zukunft aus einem Kaffeesatz auszulesen ...
|

05-09-2002, 15:58
|
andik2000
Registrierter Benutzer
|
|
Registriert seit: Jan 2002
Beiträge: 810
|
|
Da ich das Verzeichnis auf dem selben Server kopieren möchte, wo auch mein PHP-Code liegt, wäre FTP glaube ich unsinnig.
Wie würde es denn mit Hilfe des Arrays funktionieren?
Gibt es da ein Beispiel-Script?
Ich habe einen Order DATA, in dem liegt der Ordner SCRIPTE.
SCRIPTE enthält meine PHP-Programmierung.
Dann gibts in DATA auch noch TEMP und ONLINE.
Ich möchte nun von SCRIPT aus den gesamten Inhalt von TEMP nach ONLINE verschieben, wobei vorher alles aus ONLINE gelöscht werden soll.
Für einen kleine Programmierschnipsel wäre ich auf ewig Dankbar.
Gruß & Dank, Andi
|

05-09-2002, 17:14
|
faustus
Registrierter Benutzer
|
|
Registriert seit: May 2002
Ort: Ingolstadt
Beiträge: 188
|
|
die ftp befehle sind kein unsinn. das sind die selben wie die linuxbefehle, wenn du ein verzeichnis auf dem server in einer konsole kopierst.
steht im php buch unter
http://www.php-resource.de/manual.php?p=function.copy
__________________
Gruß,
faustus
____________________
Programmieren ist manchmal genauso logisch, wie die Zukunft aus einem Kaffeesatz auszulesen ...
|

05-09-2002, 17:33
|
andik2000
Registrierter Benutzer
|
|
Registriert seit: Jan 2002
Beiträge: 810
|
|
Ich meine mit Unsinn ja auch nur, dass es womöglich viel schneller geht die Dateien über das Filesystem direkt zu kopieren, als per FTP eine Verbindung herzustellen, die erst den User checkt und dann die Dateien kopiert.
Danke für die copy-Funktion, die ist mir schon bekannt.
Mir gehts viel mehr darum, wie ich denn ermittle, welche Ordner und Dateien in meinem obersten Ordner sind und wie weiss mein Code, ob noch weitere Ordner verschachtelt sind, die mitkopiert werden müssen.
Ein einzelner Befehl nützt mir da wenig, ich bräuchte schon ein bisschen mehr, denn ich weis momentan gar nicht, wie ich das angehen soll.
Vielleicht hat ja jemand so was schon mal so was gecoded und könnte das hier freundlicherweise posten
Grüße, Andi
|

06-09-2002, 09:54
|
faustus
Registrierter Benutzer
|
|
Registriert seit: May 2002
Ort: Ingolstadt
Beiträge: 188
|
|
Habe da was gefunden, das genau das kann was du brauchst. Wnn nicht, dann weiss ich auch nciht genau was du willst:
Dieses Beispiel kopiert eine Directory mit allen Unterordnern und Files:
-----
function rec_copy ($from_path, $to_path) {
mkdir($to_path, 0777);
$this_path = getcwd();
if (is_dir($from_path)) {
chdir($from_path);
$handle=opendir('.');
while (($file = readdir($handle))!==false) {
if (($file != ".") && ($file != "..")) {
if (is_dir($file)) {
rec_copy ($from_path.$file."/", $to_path.$file."/");
chdir($from_path);
}
if (is_file($file)){
copy($from_path.$file, $to_path.$file);
}
}
}
closedir($handle);
}
}
__________________
Gruß,
faustus
____________________
Programmieren ist manchmal genauso logisch, wie die Zukunft aus einem Kaffeesatz auszulesen ...
|

06-09-2002, 10:59
|
andik2000
Registrierter Benutzer
|
|
Registriert seit: Jan 2002
Beiträge: 810
|
|
Das sieht schon genau danach aus, was ich suche.
Allerdings funktioniert es nicht richtig
Ich rufe die Funktion mit rec_copy("temp/","live/"); auf.
Alles was es mir dan macht, ist den Ordner "live" anzulegen und bringt dann mehrere Fehlermeldungen:
Unable to open 'temp/text.php4' for reading: No such file or directory
MkDir failed (No such file or directory)
ChDir: No such file or directory (errno 2)
Ich finde aber leider den Fehler nicht.
Ich hatte ursprünglich bei dem Funktionsaufruf die Slashes weggelassen, aber da hatte er mir "Unable to open 'temptext.php4..." angezeigt. Hat also die Trennug, zwischen Datei und Verzeichnis nicht erkannt.
Aber jetzt mit dem Slash erkennt das Script trotzdem nichts.
Wo kann der Fehler sein?
Grüße, Andi
|

06-09-2002, 11:16
|
faustus
Registrierter Benutzer
|
|
Registriert seit: May 2002
Ort: Ingolstadt
Beiträge: 188
|
|
Sorry, die funktion geht nur bis zu einem Level ...
Hier eine erweiterte variante, die mehr kann
PHP-Code:
<?
$date = date ("Ymd");
$from_path = "c:/program files/easyphp/ccl_www";
$to_path = "c:/tmp/cp/to/$date/ccl_www";
##### No trailing slash #########
##### "/" used instead of "\\" #####
#######################################
if (!is_dir($to_path))
{
echo "Creating destination path\n";
create_path($to_path);
}
#######################################
if(!is_dir($from_path))
{
echo "failed";
exit;
}
else
{
rec_copy($from_path, $to_path);
echo "Files copied from $from_path and backed up to $to_path\n";
}
##############################################
function rec_copy($from_path, $to_path)
{
if (!is_dir($to_path))
mkdir($to_path, 0777);
$this_path = getcwd();
if (is_dir($from_path))
{
chdir($from_path);
$handle = opendir('.');
while (($file = readdir($handle)) !== false)
{
if (($file != ".") && ($file != ".."))
{
if (is_dir($file))
{
rec_copy ($from_path."\\".$file, $to_path."\\".$file);
chdir($from_path);
}
if (is_file($file))
{
copy($from_path."\\".$file, $to_path."\\".$file);
}
}
}
closedir($handle);
}
else
{
echo "if (is_dir($from_path))\n";
}
}
##############################################
##############################################
function create_path($to_path)
{
$path_array = explode('/', $to_path); // split the path by directories
/*
echo '<pre>'; // show everything in the $path_array variable
var_dump($path_array);
echo '</pre>';
*/
$dir=''; // start with empty directory
foreach($path_array as $key => $val) {
// echo "$key => $val\n";
if (!strpos($val, ':')) { // if it's not a drive letter
$dir .= '/'. $val;
if (!is_dir($dir)) {
// echo "Not a dir: $dir\n";
if (!mkdir($dir, 0777))
echo "Failed creating directory: $dir\n";
else
echo "Created directory: $dir\n";
}
}
}
}
?>
__________________
Gruß,
faustus
____________________
Programmieren ist manchmal genauso logisch, wie die Zukunft aus einem Kaffeesatz auszulesen ...
|

06-09-2002, 12:16
|
andik2000
Registrierter Benutzer
|
|
Registriert seit: Jan 2002
Beiträge: 810
|
|
Also irgendwie meint es das Schicksal schlecht mit mir
Ich erhalte einen Parse-Error in Zeile 5, habe es jetzt mal alles Zeilenweise nach unten geschoben um zu sehen in welcher Zeile genau. Da kam ich dann auf Zeile 37: rec_copy ($from_path."\".$file, $to_path."".$file);
Dort habe ich dann mal den Backslash herum gedreht, dann hats mir keinen Parse error mehr angezeigt, dafür aber wieder die bekannten Fehler, siehe meinen vorherigen Thread.
Slebst wenn ich aus dem Backslash ein \\ mache, für den Fall, dass einer als Vorzeichen für z.B. \n interpretiert wir, läufts nicht.
Please, wie bekomme ich das Ding zum laufen.
Verzweifelte Grüße, Andi
|

06-09-2002, 14:32
|
faustus
Registrierter Benutzer
|
|
Registriert seit: May 2002
Ort: Ingolstadt
Beiträge: 188
|
|
Hi,
das problem ist, das script ist nicht von mir.
Ich habe es mir jetzt 30 min angeschaut. Das Script funktioniert nur mit absoluten Pfaden. auf deinem webserver benutzt du aber relative pfade.
Ich kann dir leider nicht helfen bei der anpassung. Sorry
__________________
Gruß,
faustus
____________________
Programmieren ist manchmal genauso logisch, wie die Zukunft aus einem Kaffeesatz auszulesen ...
|

06-09-2002, 15:38
|
andik2000
Registrierter Benutzer
|
|
Registriert seit: Jan 2002
Beiträge: 810
|
|
Schade, trotzdem vielen Dank!
Gruß, Andi
|

06-09-2002, 16:36
|
slarti
Member
|
|
Registriert seit: Jun 2002
Ort: berlin
Beiträge: 448
|
|
...hmm, ich würde es ja mit exec() probieren,
bei unix-systemen z.B
PHP-Code:
exec("cp -r $quelle $ziel");
__________________
eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùûä¶³Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");
|

06-09-2002, 17:05
|
andik2000
Registrierter Benutzer
|
|
Registriert seit: Jan 2002
Beiträge: 810
|
|
HURRA, das ist es!
Gibt es so einen Befehl auch für nicht UNIX-Systeme, z.B. NT-Server?
Aber wichtig, dass es erst mal bei mir läuft.
Dank & Gruß,
Andi
|

08-11-2002, 13:03
|
alefu
Registrierter Benutzer
|
|
Registriert seit: Nov 2001
Beiträge: 76
|
|
Verzeichnis kopieren
hab das mit exec ausprobiert. Kommt zwar keine Fehlermeldung aber gehen tuts auch nicht...
<?PHP
$quelle="localhost/digishop/flash";
$ziel="localhost/flash";
exec("cp -r $quelle $ziel");
?>
kanns mir mal einer erklären?
Suche auch eine Lösung um Dateien auf dem Server in einen Temp. Ordner zu kopieren, den dann zu zippen und zum download bereitzustellen...
Hat jemand ne Lösung?
In den Standart ftp- bzw. Verzeichnisfunktionen find ich nix.
Danke aus dem grauen Wü
Alex
__________________
na lecker...
alex
|

08-11-2002, 13:15
|
TBT
 Moderator
|
|
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 2.787
|
|
das zuerst gepostete Script arbeitet einwandfrei, man muß die function nur richtig aufrufen!
PHP-Code:
function rec_copy ($from_path, $to_path){
mkdir($to_path, 0777);
$this_path = getcwd();
if (is_dir($from_path)){
chdir($from_path);
$handle = opendir('.');
while (($file = readdir($handle)) !== false){
if (($file != ".") && ($file != "..")){
if (is_dir($file)){
rec_copy ($from_path . $file . "/", $to_path . $file . "/");
chdir($from_path);
}
if (is_file($file)){
copy($from_path . $file, $to_path . $file);
}
}
}
closedir($handle);
}
}
rec_copy(dirname(__FILE__).'/../template/standard/',dirname(__FILE__).'/../template/new/');
kopiert Unterverzeichnisse mit...
einziger Fehler, wenn ein Verzeichniss/Datei schon existiert, kommt ne Fehlermeldung. Aber das sollte man per @ abschalten können
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
Aktuelle PHP Scripte
Homepagetools 2022
Kostenloses Gästebuch und Homepagetools für die eigene Homepage.
Bei GuxDu kann man sich kostenlos die Websitetools auf die vorhandene Website einbauen. Zudem kann man bei GuxDU auch eine eigene Homepage mit 3D Effekten erstellen. GuxDu ist kostenlos.
29.04.2022
freepler | Kategorie: PHP/ Gaestebuch
|
SF-Shopsystem V1.0
Hier haben wir ein einzigartiges Shopsystem in PHP.
Die Anzahl der Artikel ist unbegrenzt, einfach zu bedienen und erklärt sich.
Ausführliche Beschreibung weiter unten.
28.04.2022
Speedcrawler | Kategorie: PHP/ Shops
|
Anzeigen Markt mit PayPal Bezahl System
Anzeigen Markt Script
mit PayPal Bezahl System
Der Benutzer hat die Möglichkeit sofort nach Bezahlung mit PayPal
seine Anzeigen zu schalten, je nach seinem Guthaben.
27.04.2022
Webace_de | Kategorie: PHP/ Anzeigenmarkt
|
Alle PHP Scripte anzeigen
|