php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


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.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 05-09-2002, 15:29
andik2000
 Registrierter Benutzer
Links : Onlinestatus : andik2000 ist offline
Registriert seit: Jan 2002
Beiträge: 810
andik2000 ist zur Zeit noch ein unbeschriebenes Blatt
Question 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
Mit Zitat antworten
  #2 (permalink)  
Alt 05-09-2002, 15:34
faustus
 Registrierter Benutzer
Links : Onlinestatus : faustus ist offline
Registriert seit: May 2002
Ort: Ingolstadt
Beiträge: 188
faustus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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 ...
Mit Zitat antworten
  #3 (permalink)  
Alt 05-09-2002, 15:58
andik2000
 Registrierter Benutzer
Links : Onlinestatus : andik2000 ist offline
Registriert seit: Jan 2002
Beiträge: 810
andik2000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #4 (permalink)  
Alt 05-09-2002, 17:14
faustus
 Registrierter Benutzer
Links : Onlinestatus : faustus ist offline
Registriert seit: May 2002
Ort: Ingolstadt
Beiträge: 188
faustus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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 ...
Mit Zitat antworten
  #5 (permalink)  
Alt 05-09-2002, 17:33
andik2000
 Registrierter Benutzer
Links : Onlinestatus : andik2000 ist offline
Registriert seit: Jan 2002
Beiträge: 810
andik2000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #6 (permalink)  
Alt 06-09-2002, 09:54
faustus
 Registrierter Benutzer
Links : Onlinestatus : faustus ist offline
Registriert seit: May 2002
Ort: Ingolstadt
Beiträge: 188
faustus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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 ...
Mit Zitat antworten
  #7 (permalink)  
Alt 06-09-2002, 10:59
andik2000
 Registrierter Benutzer
Links : Onlinestatus : andik2000 ist offline
Registriert seit: Jan 2002
Beiträge: 810
andik2000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #8 (permalink)  
Alt 06-09-2002, 11:16
faustus
 Registrierter Benutzer
Links : Onlinestatus : faustus ist offline
Registriert seit: May 2002
Ort: Ingolstadt
Beiträge: 188
faustus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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_path0777);

$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($dir0777))
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 ...
Mit Zitat antworten
  #9 (permalink)  
Alt 06-09-2002, 12:16
andik2000
 Registrierter Benutzer
Links : Onlinestatus : andik2000 ist offline
Registriert seit: Jan 2002
Beiträge: 810
andik2000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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

Mit Zitat antworten
  #10 (permalink)  
Alt 06-09-2002, 14:32
faustus
 Registrierter Benutzer
Links : Onlinestatus : faustus ist offline
Registriert seit: May 2002
Ort: Ingolstadt
Beiträge: 188
faustus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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 ...
Mit Zitat antworten
  #11 (permalink)  
Alt 06-09-2002, 15:38
andik2000
 Registrierter Benutzer
Links : Onlinestatus : andik2000 ist offline
Registriert seit: Jan 2002
Beiträge: 810
andik2000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Schade, trotzdem vielen Dank!

Gruß, Andi
Mit Zitat antworten
  #12 (permalink)  
Alt 06-09-2002, 16:36
slarti
 Member
Links : Onlinestatus : slarti ist offline
Registriert seit: Jun 2002
Ort: berlin
Beiträge: 448
slarti ist zur Zeit noch ein unbeschriebenes Blatt
Standard

...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\";");
Mit Zitat antworten
  #13 (permalink)  
Alt 06-09-2002, 17:05
andik2000
 Registrierter Benutzer
Links : Onlinestatus : andik2000 ist offline
Registriert seit: Jan 2002
Beiträge: 810
andik2000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #14 (permalink)  
Alt 08-11-2002, 13:03
alefu
 Registrierter Benutzer
Links : Onlinestatus : alefu ist offline
Registriert seit: Nov 2001
Beiträge: 76
alefu ist zur Zeit noch ein unbeschriebenes Blatt
Standard 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
Mit Zitat antworten
  #15 (permalink)  
Alt 08-11-2002, 13:15
TBT
  Moderator
Links : Onlinestatus : TBT ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 2.787
TBT befindet sich auf einem aufstrebenden Ast
TBT eine Nachricht über ICQ schicken TBT eine Nachricht über AIM schicken TBT eine Nachricht über Yahoo! schicken
Standard

das zuerst gepostete Script arbeitet einwandfrei, man muß die function nur richtig aufrufen!
PHP-Code:
function rec_copy ($from_path$to_path){
    
mkdir($to_path0777);
    
$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
__________________
TBT

Die zwei wichtigsten Regeln für eine berufliche Karriere:
1. Verrate niemals alles was du weißt!


PHP 2 AllPatrizier II Browsergame
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:00 Uhr.