Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przekopiowanie plików z katalogu do katalogu
Forum PHP.pl > Forum > Przedszkole
miras
Witam, jaki macie sposób na przekopiowanie plików z katalogu do katalogu? ja już się męczę z godzinę i nic, uprzedzając wasze wypowiedzi wrzucam mój kod:

  1. <?php
  2. $cdir = 'szablony/'.$_POST['lay'].'/';
  3. $tdir = 'strony/'.$_SESSION['katalog'].'/';
  4. system("cp -vfr $cdir* $tdir");
  5.  
  6. ?>
  7.  


abort
Zadam głupie pytania:
1. a katalog docelowy to istnieje i masz do niego prawa?
2. dlaczego do cp podajesz "-v", oznaczające verbose?
miras
katalog docelowy istnieje, chmod 777..

2. nie potrafię odpowiedzieć.
abort
1. http://php.net/manual/en/function.getcwd.php - sprawdź, w jakim jesteś katalogu, bo może niekoniecznie tam, gdzie myślisz, że jesteś. Zresztą, system() to też funkcja, możesz sobie wydrukować jej wynik, może też Cię to naprowadzi.
miras
ehh,

system() has been disabled for security reasons in

i wszystko jasne, jak inaczej można przekopiować PLIKI z katalogu x do katalogu y ? nie za pomocą funkcji system() bo jak widać jest wyłąćzona ze względów bezpieczeństwa..
abort
Niestety - musisz sam napisać całość. Najpierw napisać jedną funkcję, która skopiuje jeden plik, a potem drugą funkcję, która przeleci katalog źródłowy i potem w zależności od tego czy znajdzie katalog czy plik, albo utworzy w nowym drzewie katalog, alko skopiuje plik.
W sumie dość ciekawe doświadczenie programistyczne pozwalające poznać (i w praktyce zastosować) rekurencję.
miras
a jakieś dokładniejsze wskazówki jak to ugryźć ?

Wytłumaczę to dokładniej:

  1. copy("szablony/1/" , "strony/x/") or die("Błąd");



szablony/1/ <- katalog, z którego chcę przekopiować pliki.

strony/x/ <- katalog, do którego chcę przekopiować pliki.



Wytłumaczę to dokładniej:

  1. copy("szablony/1/" , "strony/x/") or die("Błąd");



szablony/1/ <- katalog, z którego chcę przekopiować pliki.

strony/x/ <- katalog, do którego chcę przekopiować pliki.

d3ut3r
za pomocą np glob pobierz pliki i w pętli je skopiuj
miras
tak, tyle już się dowiedziałem, teraz mam większy problem, bo te pliki, które chcę przekopiować są w katalogach, a ta funkcja sama z siebie pobierze mi tylko nazwy katalogów z pierwszego katalogu, a żeby było wszystko poprawnie muszę użyć rekurencji, tak jak kolega wyżej napisał, proszę się tylko nie śmiać ;-)

jak na razie mam coś takiego: pluje błędami & wykonuje się w nieskończoność..

  1. <?php
  2.  
  3. function katalogi($dir)
  4. {
  5.  
  6. while (($file = readdir($dir)) !== false)
  7. {
  8.  
  9. if (!is_file($file)) {
  10. echo "filename: " . $file . "<br />";
  11. $kat=$file;
  12. }
  13. }
  14. closedir($dir);
  15.  
  16. return katalogi($dir=$kat);
  17. }
  18.  
  19.  
  20.  
  21. katalogi("szablony/1/");
  22.  
  23. ?>


z pomocą forum i internetu poradziłem sobie smile.gif


  1. <?
  2. function p($arg1){
  3. if ($dir = @opendir($arg1)) {
  4. while($file = readdir($dir)){
  5. if($file=='.' || $file=='..')
  6. continue;
  7. if(is_dir($arg1.'/'.$file))
  8. p("$arg1/$file");
  9. else
  10. echo "$arg1/$file<br>";
  11. }
  12. closedir($dir);
  13. }
  14. else die("Nie moge otworzyc katalogu : $arg1");
  15. }
  16. p('szablony/1/');
  17. ?>
d3ut3r
w manualu w komentarzach do glob można znaleźć:

  1. // $Id: rglob.php,v 1.0 2008/11/24 17:20:00 hm2k Exp $
  2.  
  3. /**
  4.  * Recursive glob()
  5.  */
  6.  
  7. /**
  8.  * @param int $pattern
  9.  * the pattern passed to glob()
  10.  * @param int $flags
  11.  * the flags passed to glob()
  12.  * @param string $path
  13.  * the path to scan
  14.  * @return mixed
  15.  * an array of files in the given path matching the pattern.
  16.  */
  17.  
  18. function rglob($pattern='*', $flags = 0, $path='')
  19. {
  20. $paths=glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT);
  21. $files=glob($path.$pattern, $flags);
  22. foreach ($paths as $path) { $files=array_merge($files,rglob($pattern, $flags, $path)); }
  23. return $files;
  24. }
  25.  
  26. /* example usage: */
  27. chdir('../');
  28. var_export(rglob('*.php'));


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.