Il a été demandé de nombreuses fois pourquoi PHP5 n'était pas encore marqué comme stable dans portage. Le problème n'est pas le paquet PHP5 lui-même ; la principale raison pour laquelle PHP5 n'est pas encore marqué comme stable est qu'il y a beaucoup d'applications, d'extensions de PHP et de paquets dans portage qui ne fonctionnent pas avec PHP5 et il n'y a rien que nous ne puissions faire pour y remédier. PHP5 n'est pas compatible à 100% avec PHP4 et tous les programmes PHP4 ne peuvent être ou ne seront pas portés pour être utilisés avec PHP5. Beaucoup d'utilisateurs vont encore avoir besoin du support de PHP4 pour un bon moment.
La solution à ces problèmes est de fournir un environnement comportant à la fois PHP4 et PHP5. Ce n'était toutefois pas possible avec la configuration actuelle des paquets et eclasses de PHP ; il a donc été nécessaire de mettre beaucoup d'efforts dans la mise en place d'une nouvelle configuration, de nouvelles eclasses et de nouveaux ebuilds.
Ce document explique comment mettre à jour sans détériorer votre système.
Tous les ebuilds de PHP
Pour choisir la SAPI que vous désirez, utilisez les USE flags suivants :
Vous pouvez mélangez ces USE flags à ceci près que vous ne pouvez pas activer
Le principal objectif de ces ebuilds est de vous permettre d'avoir PHP4 et PHP5 installés en parallèle :
(installer la dernière version de PHP avec les modules CLI et Apache2) USE="cli apache2" emerge 'dev-lang/php'(installer uniquement PHP4) USE="cli apache2" emerge '=dev-lang/php-4*'(installer les deux, PHP4 et PHP5) USE="cli apache2" emerge '=dev-lang/php-4*' '=dev-lang/php-5*'
Les nouveaux ebuilds de PHP ont été déplacés de
Pour installer
(installer APC pour PHP4 uniquement) emerge dev-php4/pecl-apc(installer APC pour PHP5 uniquement) emerge dev-php5/pecl-apc(installer APC pour PHP4 et PHP5) emerge dev-php4/pecl-apc dev-php5/pecl-apc
Si vous installez plus d'une version de PHP, par exemple :
USE="cgi cli apache2" emerge '=dev-lang/php-4*' '=dev-lang/php-5*'
Ces ebuilds vont créer des liens symboliques dans
Tout d'abord, vous devez déterminer quels paquets additionnels vous devez mettre
à jour. Vous pouvez faire cela en utilisant l'outil
$ 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)
Les extensions de PHP comme
ont été séparées en 2 catégories dans portage :
Exemples de nouveaux dossiers et de changements de noms :
Extension PHP | ancien | nouveau pour PHP4 | nouveau pour PHP5 |
---|---|---|---|
Nous avons effectués de nombreux changements dans le fonctionnement de PHP sous Gentoo. Vous devez supprimer complètement vos anciens paquets PHP avant d'installer les nouveaux paquets :
(supprimer les paquets PHP) emerge --unmerge php mod_php(supprimer les extensions de PHP) emerge --unmerge PECL-apc PECL-imagick xdebug(suprimer les bibliothèques/applications PHP) emerge --unmerge PEAR-PEAR PEAR-Mail PEAR-MDB smarty
Comme nous avons ajouté de nouveaux USE flags, vous désirez probablement les
passer en revue et ajouter les lignes appropriées à
Veuillez configurer les USE flags en fonction des fonctionnalités que vous
désirez intégrer à votre installation de PHP (il est recommandé de définir au
moins l'USE flag
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
Si vous désirez installer PHP4 et PHP5 en parallèle, vous pouvez définir différents USE flags pour chaque version :
=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
Maintenant vous avez le choix d'installer uniquement PHP4, uniquement PHP5 ou
les deux en parallèle. Pour installer PHP4, vous n'avez qu'à installer
Vérifier les USE flag :
(vérifier le paquet PHP4) emerge --pretend --verbose '=dev-lang/php-4*'(vérifier le paquet PHP5) emerge --pretend --verbose '=dev-lang/php-5*'(vérifier les extensions pour PHP4) emerge --pretend --verbose dev-php4/pecl-apc dev-php4/pecl-imagick dev-php4/xdebug(vérifier les extensions pour PHP5) emerge --pretend --verbose dev-php5/pecl-apc dev-php5/pecl-imagick(vérifier les bibliothèques/applicaions PHP) emerge --pretend --verbose PEAR-PEAR PEAR-Mail PEAR-MDB smarty
Installez PHP si tout est correct :
(installer le paquet PHP4) emerge '=dev-lang/php-4*'(installer le paquet PHP5) emerge '=dev-lang/php-5*'(installer les extensions pour PHP4) emerge dev-php4/pecl-apc dev-php4/pecl-imagick dev-php4/xdebug(installer les extensions pour PHP5) emerge dev-php5/pecl-apc dev-php5/pecl-imagick(installer les bibliothèques/applications PHP) emerge PEAR-PEAR PEAR-Mail PEAR-MDB smarty
Une fois l'installation terminée, vous aurez des applications pour
Considérant que vous avez installé
(pour cli) php-select php(pour cgi) php-select php-cgi(pour phpize, php-config) php-select php-devel
Le résultat devrait ressembler à ceci :
# php-select php /usr/bin/php is set to /usr/lib/php5/bin/php
Ceci signifie que
Si vous n'êtes pas satisfait de la configuration que vous avez découverte au
chapitre précédent, vous pouvez utiliser
(pour cli) php-select php php4(pour cgi) php-select php-cgi php5(pour phpize, php-config) php-select php-devel php5
Vérifier les liaisons :
# 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'
Le paquet PHP pour Gentoo place la configuration dans
$ ls -1 /etc/php apache2-php4 apache2-php5 cli-php4 cli-php5
Chaque sous-dossier contient son propre
Vous devriez utiliser
Exemple pour PHP 5.1 dans
include_path = ".:/usr/lib/php" extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20050617/"
include_path = ".:/usr/share/php" extension_dir = "/usr/lib/php5/lib/php/extensions/no-debug-non-zts-20050617/"
Le nouveau paquet PHP ne stoque plus les directives de configuration des
extensions externes (partagées) de PHP dans
Si vous avez installé
Vous devez donc déplacer les directives de configuration d'APC de
Pour configurer Apache pour charger le module PHP4 ou PHP5 (mod_php), vous devez
ajouter la directive
(options pour PHP4) APACHE2_OPTS="-D PHP4"(ou options pour PHP5) APACHE2_OPTS="-D PHP5"
Il y a de nombreuses façons de configurer Apache pour utiliser les deux versions de PHP en parallèle. La plus simple est d'utiliser PHP4 et PHP5 en tant qu'application cgi, ou bien PHP4 en tant que cgi et PHP5 en tant que module (ou bien l'inverse). Il n'est pas possible d'utiliser le module PHP4 et le module PHP5 dans une seule instance d'Apache.
Nous avons créé un
Si vous rencontrez des problèmes avec les nouveaux paquets PHP de Gentoo, voici les moyens que vous avez d'obtenir de l'aide :
Pour des détails à propos de l'implémentation des nouveaux paquets, vous pouvez
consulter les
Sur la