Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jakiego typu archiwum użyć do pakowania wtyczek?
Forum PHP.pl > Forum > PHP
Brand
Witam. Tak jak w temacie, szukam typu archiwum, w którym mógłbym pakować wtyczki dla mojego CMSa. Chodzi o to, aby można je było wypakować na serwerze z poziomu PHP. Chcę, aby rozwiązanie było dostępne na większości serwerów.
wookieb
ZIP
thek
Rozważania w sumie tylko do 2 się ograniczą: zip albo tar.gz, ze wskazaniem na zip. Inne są albo rzadkie, albo są problemy licencyjne.
wookieb
Bardzo fajny jest też PHAR. Dostępny dla większości serwerów używających php5
erix
Oczywiście, że PHAR. Do tego można go połączyć z mechanizmem podpisywania paczek.

Jeśli by się zdarzyło, że PHAR na serwerze jest problemem, to pozostaje albo tgz, albo tbz.

edit@down: średnio rozgarnięty człowiek potrafi korzystać z wiki/Google. tongue.gif
cojack
Jestem za PHAR.

@edit
rozwinę skrót myślowy erixa:
tgz : tar.gz
tbz: tar.bz2
thek
Fakt... Zapomniałem o PHAR, bo rzadko archiwa tworzę z poziomu php. Ale rozwiązanie jak najbardziej godne polecenia.
Brand
Zapominałem, napisać, że w grę wchodzi PHP 5, bo takiego wymaga mój CMS. Również słyszałem o PHAR, znalazłem tutorial jak zrobić paczkę, gorzej z wypakowywaniem, bo nic nie ma. Może nie umiem szukać? tongue.gif Jedyne co udało mi się znaleźć to: http://www.php.net/manual/pl/phar.uncompressallfiles.php A manual mówi:
Cytat
This method decompresses all files in the Phar archive.

Co ja osobiście rozumiem, że wypakowuję wszystkie pliki wewnątrz archiwum, jeżeli się mylę to mnie poprawcie. winksmiley.jpg Poza tym nie wiem o co chodzi z tym phar.readonly.
erix
Eeee, ale po co tak kombinować? winksmiley.jpg

http://pl2.php.net/manual/pl/phar.using.stream.php

A co do braku funkcji, manual: http://pl2.php.net/manual/pl/phar.installation.php
Cytat
The Phar extension is built into PHP as of PHP version 5.3.0. Phar may be installed via the PECL extension with previous PHP versions, and the » Phar PECL page contains further information and history.


Bez PECL się chyba nie obejdzie; nie znalazłem wrappera napisanego w czystym PHP.
batman
Archiwum phar nie trzeba wypakowywać. Możesz dołączyć plik phar do strony, a resztą zajmie się plik stub.
Brand
~erix: Trudno, będzie działać tylko na PHP 5.3, nic się na to nie poradzi, chyba większość hostingów ma już tą wersję php? smile.gif
~batman: Wiem, że tak można, ale mi chodzi własnie o to, żeby to wypakować. Chociaż może to nie jest taki zły pomysł. Da się odczytać jakiś plik z phara, który znajduje się na zdalnym serwerze? winksmiley.jpg

Mam jeszcze dwa pytania:
1. Da się tam trzymać inne pliki niz tylko .php? Wydaje mi się, że tak, ale wole się upewnić.
2. Jak to wypakować? Trzeba puszczać foreach, i file_get_contents odczytywać oraz zapisywać file_put_contents każdy plik z osobna?
erix
Cytat
~erix: Trudno, będzie działać tylko na PHP 5.3, nic się na to nie poradzi, chyba większość hostingów ma już tą wersję php?

Jeszcze długo większość będzie miała 5.2...
Brand
To nie dobrze, a phara da się wypakować czymś innym np. zipem? Jeśli nie to chyba zdecyduję się na zipa, widziałem kiedyś klasę w php do wypakowywania tych archiwów. Co prawda autor twierdził, że ta klasa ma małą wydajność, ale zawsze lepsze takie coś niż nic. W właśnie jak to jest z obsługa zipa na serwerach?
erix
http://www.php.net/manual/en/phar.fileformat.zip.php
http://www.php.net/manual/en/phar.fileformat.tar.php

- pod latarnią najciemniej? winksmiley.jpg

Cytat
W właśnie jak to jest z obsługa zipa na serwerach?

Szczerze mówiąc, to dość kiepsko. Chyba tylko nieliczne hostingi mają odpowiednie rozszerzenie dokompilowane.
Brand
Ale tutaj chyba mowa jest o kompresji plików do zipa wewnątrz phara? Wiec czy tak czy siak potrzebny mi jest zlib. Kompletnie nie wiem co wybrać, aby działało na większości serwerów z PHP 5.1. Ma to służyć do automatycznego systemu wtyczek - coś a'la to co jest w wordpressie (tam chyba jest zip). Po wybraniu wtyczki z poziomu PA zostanie ona ściągnięta z mirroru na serwer użytkownika do katalogu tymczasowego, następnie wypakowana do odpowiedniego katalogu i odpalony zostanie instalator.
erix
Cytat
Ale tutaj chyba mowa jest o kompresji plików do zipa wewnątrz phara?

Raczej "na zewnątrz". Z tego, co kojarzę, to PHAR jest zwykłym archiwum TAR, które w środku zawiera dodatkowo kilka metadanych (opisane w dokumentacji). Kompresja jest opcjonalna, do wyboru jeden z dwóch algorytmów.

Cytat
Kompletnie nie wiem co wybrać, aby działało na większości serwerów z PHP 5.1.

Możesz pójść na kompromis: w PEAR (i na phpclasses.org chyba też) jest klasa do obsługi archiwów TAR. Potem wystarczy gotowe archiwum skompresować poprzez gzcompress albo bzcompress i masz uniwersalną obsługę archiwów. smile.gif Niestety, nie tak wygodną, jak PHAR (nie można wywołać jednego pliku bez rozpakowania całości), ale za to masz pewność, że zadziała praktycznie wszędzie.
Brand
Już nie chodzi mi o tą kompresję, tylko o to, żeby jedna wtyczka == jedno archiwum. Póki co znalazłem klasę, która jest ponoć w wordpressie i joomli. http://www.phpconcept.net/pclzip/man/en/index.php Nigdzie nie jest napisane, żeby wymagała jakiś dodatkowych rzeczy, czyli powinno chodzić bez zlib. Może jeszcze dzisiaj zdążę to przetestować. Skoro tak znane CMS'y tego używają to chyba powinno to być dobre rozwiązanie, prawda?
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.