Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Przekopiowanie plików z katalogu do katalogu
miras
post
Post #1





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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.  


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
abort
post
Post #2





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


Zadam głupie pytania:
1. a katalog docelowy to istnieje i masz do niego prawa?
2. dlaczego do cp podajesz "-v", oznaczające verbose?
Go to the top of the page
+Quote Post
miras
post
Post #3





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


katalog docelowy istnieje, chmod 777..

2. nie potrafię odpowiedzieć.
Go to the top of the page
+Quote Post
abort
post
Post #4





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
miras
post
Post #5





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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..
Go to the top of the page
+Quote Post
abort
post
Post #6





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


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ę.
Go to the top of the page
+Quote Post
miras
post
Post #7





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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.

Go to the top of the page
+Quote Post
d3ut3r
post
Post #8





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

Ostrzeżenie: (0%)
-----


za pomocą np glob pobierz pliki i w pętli je skopiuj
Go to the top of the page
+Quote Post
miras
post
Post #9





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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 (IMG:style_emoticons/default/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. ?>
Go to the top of the page
+Quote Post
d3ut3r
post
Post #10





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

Ostrzeżenie: (0%)
-----


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


Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 09:58