[PHP] problem s funkciou copy()

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod fliper 11. 3. 2006 19:21

Mam problem s funkciou copy() v PHP. Pri kopirovani suboru sa mi subor nezkopiruje avsak sa nezobrazi ani ziadne chybove hlasenie, akokeby subor skopirovalo. Mam Apache server a ide to na Win XP


// mbing : Téma přesunuto ● z Programování do Tvorba webových stránek a aplikací.
fliper
Junior
Uživatelský avatar

Odeslat příspěvekod JeremyCB 11. 3. 2006 20:51

A jakou verzi PHP pouzivas a posli zdrojový kod
JeremyCB
Kolemjdoucí

Odeslat příspěvekod 2ge 12. 3. 2006 11:16

pozri si errorlog co ti pise, mozno to chces kopirovat niekam kam nemozes (bu pre safemode, alebo nedostacujuce prava)
SubDownloader - stahuj a nahravaj titulky k filmom pomocou opensource programu z OpenSubtitles.org
2ge
Junior
Uživatelský avatar

Odeslat příspěvekod fliper 12. 3. 2006 20:16

zdrojovy kod:

Kód: Vybrat vše
<?

function Kopirovat($od,$do) {
mkdir ($do,0777);

$handle=opendir($od);
   $pole=array();

$a=1;
while (false!==($file = readdir($handle))) {
    if ($file != "." && $file != "..") {
        $pole[$a]=$file;
   $a=$a+1;
    }
}
closedir($handle);
$max=$a-1;

$i=1;
while ($i<$max+1):
   echo $i.": ".$pole[$i]." <br>";

   if (is_dir($od."/".$pole[$i])):
      
      mkdir ($do."/".$pole[$i],0777);
      Kopirovat ($od."/".$pole[$i],$do."/".$pole[$i]);
   endif;
   if (copy ($od."/".$pole[$i],$do."/".$pole[$i])):
      
   else:
      
   endif;

   $i=$i+1;
endwhile;

}

Kopirovat ("old/pr1","data/pr1");

?>


//khihihi - moj boze, [code]!
fliper
Junior
Uživatelský avatar

Odeslat příspěvekod 2ge 13. 3. 2006 13:31

je fajn ze si napisal kod, ale napis co ti to pise v error logu. Takisto osetruj vynimky napr mkdir() or die("nemozem vytvorit dir...");
SubDownloader - stahuj a nahravaj titulky k filmom pomocou opensource programu z OpenSubtitles.org
2ge
Junior
Uživatelský avatar

Odeslat příspěvekod fliper 13. 3. 2006 16:12

v error logu mi praveze nepise nic. akokeby to spravne skopirovalo, ale pri tom sa to neskopiruje
fliper
Junior
Uživatelský avatar

Odeslat příspěvekod 2ge 13. 3. 2006 17:14

to je zaujmave. Este skus testovat ci kazda ta funkcia skoncila ok ako som napisal hore.
SubDownloader - stahuj a nahravaj titulky k filmom pomocou opensource programu z OpenSubtitles.org
2ge
Junior
Uživatelský avatar

Odeslat příspěvekod Gappa 13. 3. 2006 17:32

zkus místo toho move_uploaded_file, jen tak střílim od boku
Gappa
Junior

Odeslat příspěvekod deric 14. 3. 2006 18:29

Prvni chyba muze byt hned na zacatku. Pro priste pouzij "<?php" misto "<?". Apache je na to od nejake 2.0.x verze haklivy... Jenom je dobre si to zvyknout psat :)

co se tyce te funkce, tak bych to prepsal aspon takto:

Kód: Vybrat vše
<?php
function kopirovat($od,$do) {
if(!is_dir($do)){
   mkdir ($do,0777);
}

$handle = opendir($od);               
   $a = 0;
   while (($file = readdir($handle)) == true){
       if ($file != "." && $file != "..") {
         echo $file.'<br />';   
         $soubor[$a] = $file;
         $a++;
       }            
   }               
closedir($handle);
echo '------------<br />konec slozky '.$od.'<br />';
$i=0;
$counter=0;
while ($i<$a){
     if(!file_exists($do."/".$soubor[$i])){
        if(is_dir($od."/".$soubor[$i])){
            mkdir ($do."/".$soubor[$i],0777);
            kopirovat ($od."/".$soubor[$i],$do."/".$soubor[$i]);
        }else{
         if(copy($od."/".$soubor[$i],$do."/".$soubor[$i])){
            echo 'kopiruji soubor '.$od."/".$soubor[$i].'do slozky '.$do.'<br />';
            $counter++;
         }else {
            echo $od."/".$soubor[$i].' nebyl zkopirovan';
         }
        }
      }
      $i++;
    }
echo '--------------------<br /> Celkem zkopirovano '.$counter.' souboru<br />';
}

kopirovat ("../temp","./new6");

?>

Prvni dva soubory v kazdem adresari jsou "." a ".. ", ty to ignoruje, pokud je to slozka rekurzivne kopiruje. Pokud cilova slozka, neexistuje, vytvori ji. Pokud existuje cilovy soubor stejneho nazvu nebude to kopirovat. Jeste by to nejak chtelo osetrit to prepisovani souboru a taky chybove hlasky ohledne prav pro zapis atd.
deric
Junior


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků