Actualizarea PHP
1.
Introducere
În trecut au existat multe cereri de ce PHP5 din portage nu este marcat ca
stabil, încă. Problema nu este însuşi pachetul PHP5, principalul motiv
pentru care PHP5 nu a fost marcat, încă, stabil este că există multe
aplicaţii, extensii PHP şi pachete din portage care nu funcţionează cu
PHP5 şi nu se poate face nimic în acest sens. PHP5 nu este 100% compatibil
cu PHP4 şi nu orice aplicaţie PHP4 poate/va fi portat pentru a rula pe PHP5.
Mulţi utilizatori vor avea nevoie de suport PHP4 pentru mult timp.
Soluţia pentru rezolvarea problemelor este să fie oferit un mediu mixt PHP4
/ PHP5 pe aceeaşi maşină în acelaşi timp. Însă, acest lucru nu ar
fi fost posibil cu dispunerea curentă a pachetelor şi eclaselor PHP, deci
nu este nevoie să fie depus prea mult efort în noua dispunere, noile eclase
şi noile ebuild-uri.
Acest document detaliază modalitatea de a actualiza fără a afecta negativ
sistemul dvs.
Notă:
Noile pachete PHP necesită noua dispunere a Apache, deco consultaţi
documentul despre Actualizarea
Apache, dacă nu l-aţi actualizat încă.
|
2.
Modificări
Pachetele de Bază PHP Consolidate
Toate ebuild-urile PHP dev-php/php, dev-php/php-cgi şi
dev-php/mod_php au fost integrate într-un singur ebuild:
dev-lang/php.
Pentru a alege interfaţa server (SAPI) dorită, utilizaţi următorii
indicatori USE:
-
cgi - compilează şi instalează /usr/bin/php-cgi
-
cli - compilează şi instalează /usr/bin/php
-
apache - compilează şi instalează mod_php pentru Apache 1.3 (noua dispunere)
-
apache2 - compilează şi instalează mod_php pentru Apache 2.0 (noua dispunere)
Puteţi amesteca şi potrivi oricare dintre aceşti indicatori; cu excepţia
faptului că nu puteţi avea şi apache şi apache2 activate.
Cel mai important lucru despre aceste ebuild-uri este că puteţi avea atât
PHP4 cât şi PHP5 instalate în acelaşi timp:
Cod 2.1: instalarea PHP |
USE="cli apache2" emerge 'dev-lang/php'
USE="cli apache2" emerge '=dev-lang/php-4*'
USE="cli apache2" emerge '=dev-lang/php-4*' '=dev-lang/php-5*'
|
Notă:
Indicatorii USE nu ar trebui să fie setaţi în acest mod, vă rugăm
utilizaţi /etc/portage/package.use aşa cum este descris
ulterior.
|
Noile Categorii de Pachete
Noile ebuild-uri PHP au fost mutate din dev-php în dev-lang/php.
Pentru a face posibilă instalarea pachetelor independent pentru PHP4 şi
PHP5, două categorii noi în portage au fost create: dev-php4 şi
dev-php5. Aceste categorii sunt utilizate în special de pachetele PECL,
ca pecl-pdo, pecl-apc, php-java-bridge sau xdebug.
Pentru a instala pecl-apc:
Cod 2.2: instalarea extensiilor PHP, ca PECL::APC (examplu) |
emerge dev-php4/pecl-apc
emerge dev-php5/pecl-apc
emerge dev-php4/pecl-apc dev-php5/pecl-apc
|
Directoare Noi
-
Aceste noi ebuild-uri îşi instalează conţinutul în
/usr/lib/php4 şi /usr/lib/php5 (modulele Apache
sunt instalate în locaţia corectă pentru Apache).
-
Pachetele PEAR şi alte biblioteci PHP sunt instalate în
/usr/share/php (întainte erau instalate în
/usr/lib/php)
-
Pachetele PECL nu vor mai adăuga directive de configurare prin
adăugarea acestora în fişierul de configurare php.ini,
dar vor adăuga un fişier [PACHET].ini în directorul
/etc/php/[SAPI]/ext.
Legăturile simbolice ale binarelor PHP
Pentru a instala mai mult de o versiune de PHP, spre ex.:
Cod 2.3: emerge PHP4 şi PHP5 |
USE="cgi cli apache2" emerge '=dev-lang/php-4*' '=dev-lang/php-5*'
|
Ebuild-urile vor crea legături simbolice în /usr/bin pentru
ultima versiune de PHP instalată, în acest caz PHP5, deoarece a fost
instalat după PHP4. Dacă doriţi ca /usr/bin/php sau
/usr/bin/php-cgi să indice către PHP4, sau unul către PHP4
şi celălalt către PHP5, etc., puteţi utiliza utilitarul php-select din
app-admin/php-toolkit. php-select facilitează crearea
legăturilor simbolice către binarele corespunzătoare.
3.
Instrucţiuni de Actualizare
Găsirea pachetelor de actualizat
Mai întâi trebuie să găsiţi ce pachete adiţionale trebuie să
actualizaţi. Puteţi face acest lucru utilizând utilitarul equery,
care face parte din pachetul app-portage/gentoolkit:
Cod 3.1: afişarea unei liste cu pachetele instalate în dev-php |
$ equery list 'dev-php/'
[ Searching for all packages in 'dev-php' among: ]
* installed packages
[I--] [ ] dev-php/php-4.4.0 (0)
[I--] [ ] dev-php/mod_php-4.4.0 (1)
[I--] [ ] dev-php/smarty-2.6.10 (0)
[I--] [ ] dev-php/PEAR-PEAR-1.3.5-r1 (0)
[I--] [ ] dev-php/PEAR-Mail-1.1.6 (0)
[I--] [ ] dev-php/PEAR-MDB-1.3.0 (0)
[I--] [ ] dev-php/PECL-apc-3.0.6 (0)
[I--] [ ] dev-php/PECL-imagick-0.9.11 (0)
[I--] [ ] dev-php/xdebug-2.0.0_beta3 (0)
|
Important:
Pachetele instalate de dvs. pot varia, de aceea asiguraţi-vă că rulaţi
această comandă. Ar trebui să stocaţi lista generată mai sus, pentru a
vă asigura că veţi actualiza toate pachetele.
|
Notă:
Multe aplicaţii web nu sunt afectate în nici un mod, deoarece majoritatea
utilizează eclasa webapp, care le instalează corect. Aţi putea să
verificaţi dacă este o nouă revizie.
|
Extensiile PHP, cum ar fi
- PECL-apc
- PECL-imagick
- xdebug
au fost împărţite în două categorii de pachete separate, dev-php4
şi dev-php5, pentru a face posibilă utilizarea acestora independent,
pentru ambele versiuni de PHP. În plus, cele mai multe dintre aceste pachete
au fost redenumite:
Exemple pentru redenumirea noilor directoare:
| Extensia PHP |
anterior |
nou în PHP4 |
nou în PHP5 |
| APC |
dev-php/PECL-apc |
dev-php4/pecl-apc |
dev-php5/pecl-apc |
| Imagick |
dev-php/PECL-imagick |
dev-php4/pecl-imagick |
dev-php5/pecl-imagick |
| Xdebug |
dev-php/xdebug |
dev-php4/xdebug |
dev-php5/xdebug |
Notă:
Înainte de a instala aceste extensii, din nou, va trebui să găsiţi în
/usr/portage, modalitatea în care noile pachete au fost
redenumite.
|
Ştergerea pachetelor vechi
Am efectuat multe modificări asupra funcţionării PHP în Gentoo. Va trebui să
ştergeţi complet pachetele PHP vechi, înainte de a instala noile pachete:
Cod 3.2: ştergerea pachetelor vechi (examplu) |
emerge --unmerge php mod_php
emerge --unmerge PECL-apc PECL-imagick xdebug
emerge --unmerge PEAR-PEAR PEAR-Mail PEAR-MDB smarty
|
Setarea indicatorilor USE
Deoarece am adăugat unii indicatori USE noi, ar trebui să le revizuiţi şi să
adăugaţi liniile corespunzătoare în /etc/portage/package.use
(trebuie creat dacă nu există).
Notă:
/etc/portage/package.use va seta indicatorii USE pentru instalarea
dvs. PHP şi le va reţine fără a face modificări masive în fişerul
make.conf.
|
Vă rugăm să setaţi indicatorii USE corespunzător cu ceea ce doriţi să suporte
instalarea dvs. PHP (este recomandat să setaţi, cel puţin indicatorul USE
cli):
Cod 3.3: Indicatorii USE pentru dev-lang/php (exemplu) |
dev-lang/php -* cli apache2 ctype expat fastbuild ftp gd hash iconv memlimit mysql nls pcre pic pdo reflection session simplexml sockets spl ssl tokenizer truetype unicode xml xsl zlib
|
Notă:
-* va dezactiva toţi indicatorii USE (aceasta va dezactiva chiar
funcţionalităţi de bază ca Session-, PCRE-, gd- şi suport MySQL!), deci va
trebui să specificaţi fiecare indicator USE pentru orice
extensie/funcţionalitate pe care doriţi să o utilizaţi. Consultaţi Organizarea
Extensiilor pentru mai multe detalii. Va trebui să setaţi indicatorii USE
pentru valorile implicite setate de producători, cum ar fi pcre dacă
doriţi să utilizaţi Funcţiile
preg_* sau session dacă doriţi să utilizaţi Funcţiile
de Manipulare a Sesiunilor.
|
Dacă doriţi să instalaţi PHP4 şi PHP5 în paralel, puteţi seta indicatori USE
diferiţi pentru fiecare versiune:
Cod 3.4: indicatori USE diferiţi pentru PHP4 şi PHP5 (exemplu) |
=dev-lang/php-4* -* cli cgi apache2 ctype expat fastbuild force-cgi-redirect ftp gd iconv ipv6 memlimit mysql nls pcre pic posix session sockets ssl tokenizer truetype unicode xml xsl zlib
=dev-lang/php-5* -* cli cgi apache2 ctype fastbuild force-cgi-redirect ftp gd hash iconv ipv6 memlimit mysql nls pcre pic posix pdo reflection session simplexml soap sockets spl sqlite ssl tokenizer truetype unicode xml xmlreader xmlwriter xsl zlib
|
Notă:
Pentru o listă de indicatori USE recomandaţi, consultaţi documentul despre Indicatori
USE Recomandaţi. Pentru o listă a indicatorilor USE disponibili pentru
PHP, consultaţi tabela
de indicatori USE din interfaţa wiki a repozitoriului overlay.
|
Instalarea PHP
Acum, aveţi opţiunea de a instala doar PHP4, doar PHP5 sau ambele în paralel.
Pentru a instala doar PHP4, trebuie să instalaţi utilizând emerge pentru
=dev-lang/php-4*, pentru a instala PHP5 (ultima versiune), puteţi
utiliza dev-lang/php, şi să le instalaţi pe amândouă în paralel, trebuie
să utilizaţi emerge pentru =dev-lang/php-4* şi =dev-lang/php-5*.
Verificaţi setărilor indicatorilor USE:
Cod 3.5: verificarea indicatorilor USE (exemplu) |
emerge --pretend --verbose '=dev-lang/php-4*'
emerge --pretend --verbose '=dev-lang/php-5*'
emerge --pretend --verbose dev-php4/pecl-apc dev-php4/pecl-imagick dev-php4/xdebug
emerge --pretend --verbose dev-php5/pecl-apc dev-php5/pecl-imagick
emerge --pretend --verbose PEAR-PEAR PEAR-Mail PEAR-MDB smarty
|
Instalaţi PHP dacă totul a decurs în ordine:
Cod 3.6: instalarea noilor pachete (exemplu) |
emerge '=dev-lang/php-4*'
emerge '=dev-lang/php-5*'
emerge dev-php4/pecl-apc dev-php4/pecl-imagick dev-php4/xdebug
emerge dev-php5/pecl-apc dev-php5/pecl-imagick
emerge PEAR-PEAR PEAR-Mail PEAR-MDB smarty
|
PHP4 şi PHP5 în paralel: selectarea binarului cli/cgi
După instalare, veţi avea binare pentru cli şi/sau cgi în
/usr/lib/php4/bin şi/sau /usr/lib/php5/bin. Dacă aţi
instalat, atât PHP4 cât şi PHP5, portage nu poate decide şi întotdeauna va crea
legături simbolice pentru ultima versiune de PHP instalată, în
/usr/bin. Deci, dacă aţi instalat PHP5 ultima dată, veţi vedea că
/usr/bin/php este legat simbolic de
/usr/lib/php5/bin/php. Deci, un binar cli şi/sau
cgi, ca şi unul php-devel (responsabil pentru compilarea
extensiilor PHP utilizând phpize şi php-config) trebuie să fie
legat simbolic (în /usr/bin), lucru uşor de făcut utilizând
php-select, parte componentă a app-admin/php-toolkit.
Notă:
Pachetele dev-lang/php depind de app-admin/php-toolkit, deci
php-select ar trebui să fie disponibile automat după instalarea
pachetelor noi php.
|
Presupunând că aţi instalat atât =dev-lang/php-4* cât şi
=dev-lang/php-5*, introduceţi următoare php-select pentru a afişa
versiunile PHP selectate în mod curent:
Cod 3.7: afişarea versiunilor PHP selectate curent |
php-select php
php-select php-cgi
php-select php-devel
|
Ar trebui să vedeţi ceva de genul:
Cod 3.8: exemplu de afişare a php-select |
# php-select php
/usr/bin/php is set to /usr/lib/php5/bin/php
|
Ceea ce înseamnă că calea implictă către binarul cli al PHP
/usr/bin/php este legat simbolic de binarul PHP5
/usr/lib/php5/bin/php. Deci, script-urile PHP ce utilizează
/usr/bin/php vor fi executate de PHP5.
Utilizarea php-select pentru a modifica versiunile PHP implicite
Dacă nu sunteţi mulţumit cu setarea versiunii implicite gasită în capitolul
anterior, puteţi utiliza din nou php-select pentru a selecta versiunea
dorită:
Cod 3.9: selectarea versiunilor dorite |
php-select php php4
php-select php-cgi php5
php-select php-devel php5
|
Notă:
Vă rugăm să utilizaţi php-select -h pentru a obţine mai multe detalii
despre funcţionalităţile php-select.
|
Verficaţi legăturile:
Cod 3.10: verificarea legăturilor simbolice |
# stat /usr/bin/php /usr/bin/php-cgi /usr/bin/phpize /usr/bin/php-config | grep File
File: `/usr/bin/php' -> `/usr/lib/php4/bin/php'
File: `/usr/bin/php-cgi' -> `/usr/lib/php5/bin/php-cgi'
File: `/usr/bin/phpize' -> `/usr/lib/php5/bin/phpize'
File: `/usr/bin/php-config' -> `/usr/lib/php5/bin/php-config'
|
Notă:
Vă rugăm să notaţi faptul că php-select doar modifică versiunile
implicite. Dacă aţi instalat cgi/cli atât pentru PHP4 cât şi pentru PHP5,
puteţi întotdeauna utiliza căile directe, cum ar fi
/usr/lib/php4/bin/php sau /usr/lib/php5/bin/php
pentru a rula un script PHP specific unei versiuni. Puteţi utiliza componentele
cgi pentru PHP4 şi PHP5 în aceeaşi instanţă Apache, dar nu puteţi utiliza două
module PHP în aceeaşi instanţă Apache, consultaţi Ghidul pentru Configurarea PHP4 şi
PHP5 pentru mai multe detalii.
|
4.
Migrarea fişierelor de configurare
Pachetul PHP din Gentoo îşi stochează configuraţia în /etc/php, ce
conţine câte un subdirector pentru fiecare interfaţă de aplicaţie (SAPI) pentru
fiecare versiune de PHP:
Cod 4.1: afişarea directoarelor de configurare ale PHP |
$ ls -1 /etc/php
apache2-php4
apache2-php5
cli-php4
cli-php5
|
Fiecare subdirector conţine un fişier php.ini propriu, ca
pachetele vechi.
Modificări în php.ini
Ar trebui să utilizaţi etc-update sau dispatch-conf şi să
analizaţi diferenţele dintre setările noi şi cele vechi din
php.ini. Două directive ce trebuie neapărat verificate sunt
include_path şi extension_dir. Dar, atenţie aici,
extension_dir este diferită între versiunile PHP (de asemenea, şi între
5.0 şi 5.1!).
Exemplu pentru PHP 5.1 în /etc/php/apache2-php5/php.ini şi
/etc/php/cli-php5/php.ini:
Cod 4.2: setările vechi din php.ini |
include_path = ".:/usr/lib/php"
extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20050617/"
|
Cod 4.3: setările noi din php.ini |
include_path = ".:/usr/share/php"
extension_dir = "/usr/lib/php5/lib/php/extensions/no-debug-non-zts-20050617/"
|
Atenţie:
Asiguraţi-vă că utilizaţi etc-update sau dispatch-conf pentru a
observa setările corecte pentru fiecare fişier.
|
Configurarea Extensiilor PHP s-a modificat
Noul pachet PHP nu îşi mai stochează directivele de configurare în extensiile
PHP (partajate) din php.ini. Aceste directive vor fi stocate în
fişierele proprii de configurare ale extensiilor din directoarele
/etc/php/*/ext. Pentru a activa/dezactiva extensiile partajate,
sunt utilizate legăturile simbolice din /etc/php/*/ext-active.
Dacă doriţi să activaţi o extensie, creaţi o legătură simbolică în
/etc/php/*/ext-active care să indice către fişierul corespunzător
[EXTENSIE].ini din /etc/php/*/ext/. Dacă doriţi să
dezactivaţi o extensie, ştergeţi legătura simbolică.
Dacă aţi avut instalat întainte dev-php/PECL-apc, configurarea APC este
stocată în fişierul dvs. php.ini. Dacă reinstalaţi noul pachet
dev-php5/pecl-apc, fişierul de configurare al APC va fi scris în
/etc/php/*5/ext/apc.ini.
Deci, va trebui să mutaţi directivele de configurare din
/etc/php/*5/php.ini în /etc/php/*5/ext/apc.ini şi să
creaţi o legătură simbolică de la /etc/php/*5/ext-active/apc.ini
către /etc/php/*5/ext/apc.ini.
Notă:
Dacă instalaţi PHP ca un modul Apache, asiguraţi-vă că reporniţi Apache după
instalare şi configurare.
|
5.
Configuraţi Apache pentru funcţionarea cu PHP4 şi/sau PHP5
Pentru a configura Apache să încarce modulul de PHP4 şi PHP5 (mod_php),
trebuie să adăugaţi -D PHP4, respectiv -D PHP5 în variabila
APACHE2_OPTS din /etc/conf.d/apache2.
Cod 5.1: Configuraţi Apache pentru a încărca mod_php |
APACHE2_OPTS="-D PHP4"
APACHE2_OPTS="-D PHP5"
|
Există multe posibilităţi de a face Apache să funcţioneze cu două
versiuni de PHP în paralel. Cea mai simplă modalitate este să utilizaţi
PHP4 şi PHP5 ca binare cgi, sau PHP4 ca cgi şi PHP5 ca modul (sau invers).
Nu este posibil să utilizaţi şi modulul PHP4 şi pe cel PHP5 în
aceeaşi instanţă Apache.
Am creat un Ghid de Configurare PHP4 şi
PHP5 care explică unele soluţii posibile.
6.
Suport / Cererea de Ajutor
Dacă aveţi probleme cu noile pachete PHP, iată cum puteţi obţine ajutor:
-
Întrebări
Comune despre PHP în Gentoo
-
Pagina de
Dezvoltare a Repozitoriului Overlay de PHP
-
#gentoo-php de pe irc.freenode.net; aceasta este camera de discuţii unde
sunt autorii repozitoriului overlay sunt prezenţi în mod regulat. Ne-ar
plăcea să vă vedem acolo!
-
Forumurile Gentoo este un loc
popular pentru a cere ajutor. Sunt mulţi alţi utilizatori Gentoo care
citesc forumurile regulat, făcându-l un loc minunat de a ajuta în
grabă.
Pentru detalii despre implementarea noilor pachete, consultaţi Posturile pe
gentoo-dev ale lui Stuart şi intrările blog ale lui Stuart, începând de
la 'Modificări
Radicale pentru Suportul PHP5'.
Pe Pagina de
Dezvoltare veţi găsi multă documentaţie şi ebuild-uri mult mai recente,
ce vor fi mutate în arborele portage oficial, ulterior.
Conţinutul acestui document este publicat sub licenţa Creative Commons -
Attribution / Share Alike.
|