Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Kompresja zip wypakowuje wszystkie pliki do folderu root, nie tworzy subfolderów...
Johnas
post 29.08.2022, 07:32:34
Post #1





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


witam, mam taki kod do kompresowania plików pod ZIP...

  1. $rootPath = realpath('./');
  2. $zip = new ZipArchive;
  3. $zip->open('update-'.$version.'.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);
  4. $files = new RecursiveIteratorIterator(
  5. new RecursiveDirectoryIterator($rootPath),
  6. RecursiveIteratorIterator::LEAVES_ONLY
  7. );
  8.  
  9. foreach ($files as $name => $file)
  10. {
  11. // Skip directories (they would be added automatically)
  12. if (!$file->isDir())
  13. {
  14. // Get real and relative path for current file
  15. $filePath = $file->getRealPath();
  16. $relativePath = substr($filePath, strlen($rootPath) + 1);
  17.  
  18. // Add current file to archive
  19. if (strpos($relativePath, "nstall\\") or strpos($relativePath, "ake-update.php") or strpos($relativePath, "old\\") or strpos($relativePath, "zepsuty") or strpos($relativePath, "lobal\config.php") or strpos($relativePath, "vs\\") or strpos($relativePath, "git\\") or strpos($relativePath, "idea\\") or strpos($relativePath, "pload\\") or strpos($relativePath, "cache\\") or strpos($relativePath, 'ploads\\') or strpos($relativePath, "emplates_c")) {
  20. echo "Ignoruje ".$relativePath."</br>";
  21. } else {
  22. echo "Dodano plik: ".$relativePath."</br>";
  23. $zip->addFile($filePath, $filePath);
  24. }
  25. }
  26. }
  27.  
  28. // Zip archive will be created only after closing object
  29. $zip->close();


i kiedy wypakowuje to wszystkie pliki wyrzuca mi do folderu... nie tworzy mi subfolderów i nie wypakowuje plików z subfolderów do nich

Wytłumaczy mi ktoś dlaczego ten z**any PHP tak wypakowuje pliki ?








Dziękuję za tak wyczerpujące odpowiedzi.... Jesteście fantastyczni,,,

Czy naprawdę PHP jest tak zje**ane że nie można kompresować plików za pomocą niego ? Może wprowadzą to w wersji 50.0.49 ?

a propos wypakowywania:

  1. define('_PATH', dirname(__FILE__));
  2.  
  3. // Zip file name
  4. $filename = 'update-0.0.1-alpha.zip';
  5. $zip = new ZipArchive;
  6. $res = $zip->open($filename);
  7. if ($res === TRUE) {
  8.  
  9. // Unzip path
  10. $path = _PATH."/";
  11.  
  12. // Extract file
  13. $zip->extractTo($path);
  14. $zip->close();
  15.  
  16. echo 'Aktualizacja zakończona pomyślnie!';
  17. } else {
  18. echo 'Błąd aktualizacji! Skontaktuj się z firmą <a href="mailto:kontakt@oxi-jon.pl">Bomb of Creative</a>!';
  19. }


robię to w ten piękny sposób... nie wiem czy może można jeszcze inaczej coś tu napisać bo to jest tak ****cie obszerny kod że pisałem go przez 4 lata świetlne

Ten post edytował Johnas 20.08.2022, 21:42:45


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
trueblue
post 29.08.2022, 08:12:07
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Cytat(Johnas @ 29.08.2022, 08:32:34 ) *
i kiedy wypakowuje to wszystkie pliki wyrzuca mi do folderu... nie tworzy mi subfolderów i nie wypakowuje plików z subfolderów do nich

Sprawdzałeś przed wypakowaniem archiwum w środku, tj. czy faktycznie zawiera foldery i podfoldery?


--------------------
Go to the top of the page
+Quote Post
Johnas
post 29.08.2022, 08:19:43
Post #3





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


masz screena i jak widac to zawiera... problemem jest to że nie wiadomo czemu PHP ignoruje te foldery gdy jest utworzone przez PHP... Dziwny przypadek, chyba że to mój serwer ma takie odpały...


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
trueblue
post 29.08.2022, 08:29:02
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Na screenie z zipem widać tylko folder global, nic więcej.


--------------------
Go to the top of the page
+Quote Post
Johnas
post 29.08.2022, 08:48:53
Post #5





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


bo żeby nie kompresować po kilka razy 110 mb wszystkich plików to kompresuje tylko jeden folder i jak wypakuje mi to do folderu test tworząc folder global to znaczy że działa, ale nie dzieję się tak pewnie dlatego że nie działa...


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
trueblue
post 29.08.2022, 09:05:37
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Cytat(Johnas @ 29.08.2022, 09:48:53 ) *
jak wypakuje mi to do folderu test tworząc folder global to znaczy że działa, ale nie dzieję się tak pewnie dlatego że nie działa...

Napisz jeszcze raz po polsku.

Kompresujesz dla testów jeden folder, tak? I plik z tego folderu wypakowywują się do folderu aktualnego, a nie do folder global, tak?

Ten post edytował trueblue 29.08.2022, 09:05:56


--------------------
Go to the top of the page
+Quote Post
Johnas
post 29.08.2022, 09:29:30
Post #7





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


dokładnie... kompresuje folder global żeby sprawdzić czy będzie to dobrze się dekompresować, i w folderze test powinno stworzyć folder global, a w nim wypakować wszystkie pliki (niestety tak się nie dzieje)


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
trueblue
post 29.08.2022, 09:38:29
Post #8





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Według mnie przekazujesz niepoprawną wartość drugiego argumentu do metody addFile, to ma być lokalna ścieżka (w archiwum, a nie ścieżka systemowa).


--------------------
Go to the top of the page
+Quote Post
Johnas
post 29.08.2022, 16:02:22
Post #9





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


  1. $dir = dirname(__FILE__);
  2. $filePath = $file->getRealPath();
  3. $relativePath = substr($filePath, strlen($rootPath) + 1);
  4. $path_in_zip = str_replace($dir."\\", "", $filePath);


ani relativepath,aniani path_in_zip nie działa poprawnie jako drugi parametr


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
trueblue
post 29.08.2022, 16:22:01
Post #10





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Jaką wartość dla katalogu "global" ma zmienna $relativePath?


--------------------
Go to the top of the page
+Quote Post
Johnas
post 29.08.2022, 16:43:11
Post #11





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


Kod
Dodano plik: Accounts.php
Dodano plik: composer.json
Dodano plik: composer.lock
Dodano plik: composer.phar
Dodano plik: config.backup.php
Dodano plik: config.php
Dodano plik: Configuration.php
Dodano plik: Engine.php
Dodano plik: files\fonts\AbhayaLibre-Bold.ttf
Dodano plik: files\fonts\AbhayaLibre-ExtraBold.ttf
Dodano plik: files\fonts\AbhayaLibre-Medium.ttf
Dodano plik: files\fonts\AbhayaLibre-Regular.ttf
Dodano plik: files\fonts\AbhayaLibre-SemiBold.ttf
Dodano plik: files\fonts\AbrilFatface-Regular.otf


ignoruje nawet pliki w files\fonts\ --- wywala wszystko na jeden katalog


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
trueblue
post 29.08.2022, 16:47:22
Post #12





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Zamiast backslashy używaj slashy.


--------------------
Go to the top of the page
+Quote Post
Johnas
post 29.08.2022, 17:19:33
Post #13





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


ja pierdziele... na 90 % masz rację że to kwestia tego biggrin.gif


działa, dziękuje.... konflikt pomiędzy linuxem, a windowsem


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 17:50