Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    165

    esiste function in php per copiaere cartella?

    beh il titolo dice tutto
    esiste una function di php con la quale posso copiare tutto il contenuto di una cartella sul server in u'altra cartella sempre sul server?

    grazie

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    no ma puoi scrivertela...


    ... ti risparmio la fatica

    codice:
      function copyRecursive($source, $dest) {
        $source = str_replace('\\', '/', $source);
        $dest = str_replace('\\', '/', $dest);
        $dir = basename($source);
        mkdir($dest);
        $contenuto_dir = glob($source."*");
        foreach($contenuto_dir as $val) {
          $val = str_replace('\\', '/', $val);
          if(is_dir($val)) {
            $sorgente = $val.'/';
            $destinazione = $dest.basename($val).'/';
            Utility::copyRecursive($sorgente, $destinazione);
          } else {
            copy($val, $dest.basename($val));
          }
        }
      }
    $source = "/dir/"
    $dest = "/dir2/"
    Utility::copyrecursive($source, $dest);
    è molto rudimentale ma funziona, non controlla se esista la dir

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    165
    grazie 1000 mi sarà proprio utile ora la provo poi ti faccio sapere


    scusa non sono programmatore ma mi piace capire le cose... qual'è la parte di codice a cui dici prendi tutti i file? "*" questa?

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da supermix
    grazie 1000 mi sarà proprio utile ora la provo poi ti faccio sapere


    scusa non sono programmatore ma mi piace capire le cose... qual'è la parte di codice a cui dici prendi tutti i file? "*" questa?
    si, guardati la funzione :

    http://fr.php.net/manual/en/function.glob.php

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    165
    c'è qualche problema nello script ... si incasina con gli apistrofi nella parte dove gli si dice di invertire le sbarre / \

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    165
    dunque risolto il problema mettendo \\ doppio e aggiungendo il ; alla variabili source e dest

    <?php
    function copyRecursive($source, $dest) {
    $source = str_replace('\\', '/', $source);
    $dest = str_replace('\\', '/', $dest);
    $dir = basename($source);
    mkdir($dest);
    $contenuto_dir = glob($source."*");
    foreach($contenuto_dir as $val) {
    $val = str_replace('\\', '/', $val);
    if(is_dir($val)) {
    $sorgente = $val.'/';
    $destinazione = $dest.basename($val).'/';
    Utility::copyRecursive($sorgente, $destinazione);
    } else {
    copy($val, $dest.basename($val));
    }
    }
    }
    $source = "/dir1/";
    $dest = "/dir2/";
    Utility::copyRecursive($source, $dest); //*LINEA 80
    ?>


    ora il problema è un altro e qui chiedo a voi perchè non capisco neanche il tipo di errore

    ecco cosa mi rilascia il server

    Fatal error: Undefined class name 'utility' in /membri/supermix01/sposta.php on line 80

  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ho copiato velocemente il codice, faceva parte di una classe che mi sono scritto.

    usalo semplicemente cosi:

    copyRecursive($source, $dest);

    e dentro la funzione dove c'è :

    Utility::copyRecursive($sorgente, $destinazione);

    sostituisci con

    copyRecursive($source, $dest);

    ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    165
    ho trasformato così è giusto?

    <?php

    function copyRecursive($source, $dest) {
    $source = str_replace('\\', '/', $source);
    $dest = str_replace('\\', '/', $dest);
    $dir = basename($source);
    mkdir($dest);
    $contenuto_dir = glob($source."*");
    foreach($contenuto_dir as $val) {
    $val = str_replace('\\', '/', $val);
    if(is_dir($val)) {
    $sorgente = $val.'/';
    $destinazione = $dest.basename($val).'/';
    copyRecursive($source, $dest);
    } else {
    copy($val, $dest.basename($val));
    }
    }
    }
    $source = "/dir1/";
    $dest = "/dir2/";
    copyRecursive($source, $dest);

    ?>


    perchè non mi funziona!

  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da supermix
    ho trasformato così è giusto?

    <?php

    function copyRecursive($source, $dest) {
    $source = str_replace('\\', '/', $source);
    $dest = str_replace('\\', '/', $dest);
    $dir = basename($source);
    mkdir($dest);
    $contenuto_dir = glob($source."*");
    foreach($contenuto_dir as $val) {
    $val = str_replace('\\', '/', $val);
    if(is_dir($val)) {
    $sorgente = $val.'/';
    $destinazione = $dest.basename($val).'/';
    copyRecursive($source, $dest);
    } else {
    copy($val, $dest.basename($val));
    }
    }
    }
    $source = "/dir1/";
    $dest = "/dir2/";
    copyRecursive($source, $dest);

    ?>



    perchè non mi funziona!
    a me funziona, l'unico motivo per cui non dovrebbe funzionare è che non solo non esiste la dir di destinazione, ma neanche quella che dovrà contenerla.


    Cioè se io copio da

    c:/test/prova/

    a
    c:/test2/prova

    e non esiste test2 allora da errore.

    Come ti ho detto è una cosa rudimentale che mi sono scritto al volo, se non va, prova a mettere qualche echo quà e la che ti stampi un po' di informazioni, cosi vedi gli errori.

    Metti anche queste 2 linee in cima al file, cosi avrai anche un po' di debug da parte del motore php.

    error_reporting(E_ALL); // report all errors
    ini_set("display_errors", 1);

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.