Date de publication: le lundi 20 août 2007 à 15h53
Dernière modification: par Pascal BOYER le mercredi 15 septembre 2010 à 00h16
« Article précédent: Apache 1.3.37 : compiler et installer les modules externes (IV)
» Article suivant: Apache 1.3.37 : patcher les sources du serveur (VI)
Cruel dilemme: sans fraternité, la liberté se pétrifie;
sans liberté, la démocratie cède le pas à la tyrannie.
Une contradiction fatale, au double sens du terme: nécessaire et funeste. Sans elle, nous ne serions pas libre, nous ne pourrions aspirer à notre seule dignité: être responsable de nos actes.
Dans cet article nous allons voir dans le détail comment compiler puis installer la dernière version de PHP dans la branche 4.4
Je rappelle aux utilisateurs de eZ Publish,qu'à ce jour, PHP 5 n'est toujours pas officiellement supporté. C'est pourquoi je présente l'installation de cette version de PHP.
On retiendra également que cette version est la der des der de la branche 4 et qu'elle ne sera officiellement maintenue par les développeur de PHP que jusqu'au 31 décembre 2007 et les correctifs de sécurité jusqu'au 08 Août 2008 (voir fr.php.net )
Je vous recommande très vivement de prendre le temps de consulter ces deux ressources pour des informations complémentaires sur la compilation/installation de Apache et PHP:
Apache 1.3.37 : compiler et installer PHP
Télécharger PHP 4.4.7
On se place dans le répertoire ServeurWeb:
cd /usr/local/ServeurWeb
La page de téléchargement de toutes les versions disponibles de PHP est ici: http://www.php.net/releases
:
Sur cette page, il y a un menu déroulant sur la gauche !
On télécharge la dernière version de PHP à partir de cette page du site fr.php.net ou avec la commande wget:
wget http://fr.php.net/get/php-4.4.7.tar.bz2/from/this/mirror
On affiche la signature md5 de l'archive téléchargée:
md5sum php-4.4.7.tar.bz2
3f21b44d37a57ca3876d3aea713c700d php-4.4.7.tar.bz2
...et on la compare à celle mise en ligne sur cette page :
3f21b44d37a57ca3876d3aea713c700d
On extrait le contenu de l'archive:
tar jxfv php-4.4.7.tar.bz2
On se place dans le répertoire d'installation de PHP:
cd php-4.4.7
Configuration de PHP 4.4.7
:
Avant de commencer la configuration de PHP, je vous recommande la lecture de ce paragraphe:
A propos des interfaces SAPI
Pour compiler PHP, les packages suivants sont nécessaires (ils n'existent pas par défaut sur une Dedibox/Debian):
- bison
- byacc
- flex
- gawk
Je rappelle que nous avons compilé les librairies suivantes:
- MM
- openSSL
- Zlib
- libpng
- libxml2
- libgpg-error
- libgcrypt
- libxslt
- libgd2
- libmcrypt
- mcrypt
- libmcal
- mhash
- gettext
:
Pour créer le Makefile j'ai supprimé les packages suivants:
- libxml2-dev
- libxml2
- php4-mhash
- libmhash2
- libmhash-dev
La commande ./configure produisant une sortie très verbeuse, il peut être intéressant de la rediriger dans un fichier (en ajoutant > monfichier.txt à la fin de la commande) pour consulter plus facilement les nombreux messages.
Pair ailleurs, sachez que cette commande produit un fichier config.log placé à la racine du répertoire.
:
Je n'ai pas utilisé l'option --with-mcal=/usr/local car cette librairie engendre un message d'erreur lors de la compilation de Apache. Cette librairie semble être très problématique à compiler et installer correctement.
Ne jamais indiquer un chemin en le terminant par un slash.
L'option --with-apache= suivi du chemin menant au répertoire d'installation de Apache indique que PHP est compilé pour Apache.
L'ordre des options ci-dessous suit celui qui est renvoyé par la commande ./configure --help
Voici un lien vers la description en français de certaines des options de configuration de PHP: Options de configuration
...et on crée le Makefile:
./configure --prefix=/usr/local --with-apache=/usr/local/ServeurWeb/apache_1.3.37 --enable-fastcgi --with-config-file-path=/usr/local/lib/php --with-openssl=/usr/local --with-kerberos --with-zlib-dir=/usr/local/ServeurWeb/zlib-1.2.3 --enable-bcmath --with-bz2 --enable-calendar --with-jpeg-dir=/usr --with-crack --with-curl --with-db4 --with-dom --with-dom-xslt=/usr/local/ServeurWeb/libxslt-1.1.21 --with-dom-exslt=/usr/local/ServeurWeb/libxslt-1.1.21 --enable-exif --enable-ftp --with-gd=/usr/local --with-png-dir=/usr/local/ServeurWeb/libpng-1.2.18 --with-xpm-dir=/usr --with-freetype-dir=/usr/include/freetype2/freetype --with-t1lib --enable-gd-native-ttf --with-gmp --with-gettext=/usr/local/ServeurWeb/gettext-0.16.1 --with-iconv --with-mcrypt=/usr/local/ServeurWeb/mcrypt-2.6.6 --with-openssl-dir=/usr/local --with-mhash=/usr/local/ServeurWeb/mhash-0.9.9 --with-mime-magic --with-mysql=/usr --with-mysql-sock=/var/run/mysqld --with-ncurses --with-libedit --with-readline --with-mm=/usr/local/ServeurWeb/mm-1.4.2 --enable-shmop --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-xmlrpc --with-zip --with-pear --enable-memory-limit
Cette commande doit se terminer par quelque chose comme ça:
... ... Generating files updating cache ./config.cache creating ./config.status creating php4.spec creating main/build-defs.h creating scripts/phpize creating scripts/man1/phpize.1 creating scripts/php-config creating scripts/man1/php-config.1 creating sapi/apache/libphp4.module creating sapi/cli/php.1 creating main/php_config.h creating main/internal_functions.c creating main/internal_functions_cli.c +--------------------------------------------------------------------+ | License: | This software is subject to the PHP License, available in this | distribution in the file LICENSE. By continuing this installation | process, you are bound by the terms of this license agreement. | If you do not agree with the terms of this license, you must abort | the installation process at this point. +--------------------------------------------------------------------+ | *** NOTE *** | The default for register_globals is now OFF! | | If your application relies on register_globals being ON, you | should explicitly set it to on in your php.ini file. | Note that you are strongly encouraged to read | http://www.php.net/manual/en/security.globals.php | about the implications of having register_globals set to on, and | avoid using it if possible. +--------------------------------------------------------------------+ Thank you for using PHP.
Pour donner quelques repères, j'indique, dans le tableau ci-dessous et pour chacune des options que j'ai retenues, les packages debian que j'ai dû installer sur mon serveur Dedibox pour que la commande ./configure se déroule sans problème.
| Nom de l'option de la comande ./configure | Se rapporte à... | Nom du package Debian à installer |
|---|---|---|
| --enable-magic-quotes | PARAMETRE PHP | |
| --enable-memory-limit | PARAMETRE PHP | |
| --with_mysql=/usr | CONNEXION | libmysqlclient15-dev |
| --enable-sockets | CONNEXION | |
| --enable-ftp | PROTOCOLE | |
| --enable-exif | IMAGE | libexif-dev |
| --with-gd=/usr/local | IMAGE | libgd2-xpm-dev |
| --with-jpeg-dir=/usr | IMAGE | libjpeg62-dev |
| --with-png-dir=/usr | IMAGE | libpng12-dev |
| --with-zlib | IMAGE | zlib1-dev |
| --with-t1lib | POLICE | libt1-dev |
| --with-freetype-dir=/usr/include/freetype2/freetype | POLICE | libfreetype6-dev |
| --enable-gd-native-ttf | POLICE | |
| --with-ttf | POLICE | |
| --with-openssl | CHIFFRAGE | openssl |
| --with-mcrypt | CHIFFRAGE | libmcrypt-dev |
| --with-mhash | CHIFFRAGE | libmhash-dev |
| --with-kerberos | CHIFFRAGE | libkrb53 |
| --with-crack | CHIFFRAGE | cracklib2-dev |
| --with-curl | GESTION URL | libcurl3-openssl-dev |
| --with-mm=/usr/local/src/mm-1.4.2 | GESTION MEMOIRE | |
| --enable-shmop | GESTION MEMOIRE | |
| --enable-sysvshm | GESTION MEMOIRE | |
| --enable-sysvsem | ||
| --enable-sysvmsg | ||
| --enable-bcmath | CALCUL | |
| --with-gmp | CALCUL | libgmp3-dev |
| --with-gettext | gettext-base | |
| --enable-calendar | ||
| --with-mcal=/usr | libmcal0-dev | |
| --with-bz2 | FICHIER | bzip2 |
| --enable-zip | FICHIER | libzzip-dev |
| --with-mime-magic | FICHIER | mime-support |
| --with-db4 | STOCKAGE | libdb4.4-dev |
| --with-libedit | LANGAGE | |
| --with-readline | LANGAGE | libreadline5-dev |
| --with-dom | LANGAGE | libxml2-dev |
| --with-dom-xslt | LANGAGE | libxslt1-dev |
| --with-dom-exslt | LANGAGE | libxslt1-dev |
| --with-xmlrpc | COMMUNICATION INTER-APPLI | |
| --with-iconv | LANGUE | libtext-iconv-perl |
| --enable-mbstring | LANGUE | INDISPENSABLE !!!! |
| --with-ncurses | AFFICHAGE | libncurses5-dev |
On poursuit en compilant PHP:
make
Cette commande doit se terminer par quelque chose comme ça:
... ... s -lpanel -lncurses -lmysqlclient -lmhash -lmcrypt -lltdl -lgmp -lgd -lt1 -lfreetype -lX11 -lXpm -lpng -lz -ljpeg -lexslt -lxml2 -lxslt -lz -ldb-4.4 -ldb-4.4 -lcurl -lcrack -lbz2 -lz -lresolv -lm -ldl -lnsl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lssl -lcrypto -lcurl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lkrb5support -lresolv -lidn -lssl -lcrypto -ldl -lssl -lcrypto -lz -lxml2 -lcrypt -lcrypt -o sapi/cli/php Build complete. (It is safe to ignore warnings about tempnam and tmpnam).
Et on finit l'installation:
make install
Installing PHP SAPI module:apache Installing PHP CLI binary: /usr/local/bin/ Installing PHP CLI man page: /usr/local/man/man1/ Installing PEAR environment: /usr/local/lib/php/ [PEAR] Archive_Tar - installed: 1.3.2 [PEAR] Console_Getopt - installed: 1.2.1 [PEAR] HTML_Template_IT- installed: 1.1 [PEAR] Net_UserAgent_Detect- installed: 2.0.1 warning: pear/PEAR requires package "pear/Structures_Graph" (recommended version 1.0.2) pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0) [PEAR] PEAR - installed: 1.5.0 Wrote PEAR system config file at: /usr/local/etc/pear.conf You may want to add: /usr/local/lib/php to your php.ini include_path [PEAR] Structures_Graph- installed: 1.0.2 Installing build environment: /usr/local/lib/php/build/ Installing header files: /usr/local/include/php/ Installing helper programs: /usr/local/bin/ program: phpize program: php-config Installing man pages: /usr/local/man/man1/ page: phpize.1 page: php-config.1
:
Le fichier exécutable php a été placé dans /usr/loca/bin/
Le fichier php.ini
Ce fichier, très important puisqu'il est le fichier de configuration de PHP, est lu automatiquement à chaque (re)démarrage du serveur Apache.
C'est l'option --with-config-file-path=/usr/local/lib/php qui détermine son emplacement. Dans le fichier configure on peut lire que par défaut ce fichier est rechercher dans $PREFIX/lib
:
Si vous supprimez tous le fichiers php.ini alors PHP utilisera pour les paramètres les valeurs du fichier main/main.c
Il existe deux fichiers d'exemple à la racine du répertoire d'installation de PHP:
- php.ini-dist
- php.ini-recommended
Vous devez en copier un des deux dans le sous-répertoire lib:
cp -p php.ini-dist /usr/local/lib/php/php.ini
Si vous aviez déjà, comme moi, un serveur en production, alors c'est une bonne idée de récupérer votre fichier php.ini existant.
Voilà. PHP 4.4.7 étant fraichement installé sur notre serveur, on peut passer à la compilation du serveur web.
PEAR
Le message ci-dessus nous informe que PEAR a été installé dans le répertoire:
/usr/local/lib/php/PEAR/
A propos des interfaces SAPI
SAPI signifie Server Application Programming Interface. En bon français cela se traduit par Interface de Programmation d' Applications Serveur.
Je vous recommande la lecture du document Utiliser PHP en ligne de commande dont on retiendra au moins ceci:
«Depuis PHP 4.3.0, le nom, l'emplacement et l'existence des binaires CLI/CGI vont dépendre de la façon dont PHP est installé sur votre système. Par défaut, en exécutant make, les deux binaires CGI et CLI sont compilés et nommés respectivement sapi/cgi/ php et sapi/cli/ php dans votre répertoire source PHP. Vous remarquerez que les deux se nomment php . Ce qui se passe ensuite pendant le make install dépend de votre ligne de configuration. Si un module SAPI, apxs par exemple, a été choisi pendant la configuration, ou que l'option --disable-cgi a été activée, le CLI est copié dans {PREFIX}/bin/ php pendant le make install. Si, par exemple, --with--apxs figure dans votre ligne de configuration, le CLI est copié dans {PREFIX}/bin/ php pendant le make install, sinon c'est le CGI qui y est placé. Si vous voulez forcer l'installation du binaire CGI, lancez make install-cli après le make install. Sinon, vous pouvez aussi spécifier --disable-cgi dans votre ligne de configuration.»
:
«Du fait que les deux options --enable-cli et --enable-cgi sont activées par défaut, avoir simplement --enable-cli dans votre ligne de configuration n'implique pas nécessairement que le CLI soit renommé en {PREFIX}/bin/ php pendant le make install.»
Quel SAPI est installé
À partir d'un interpréteur de commande, lancer php -v vous dira si php est en version CGI ou CLI. Vous pouvez aussi consulter la fonction php_sapi_name() et la constante PHP_SAPI.
/usr/local/bin/php -v
PHP 4.4.7 (cli) (built: Aug 21 2007 23:21:22) Copyright (c) 1997-2007 The PHP Group Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies with eAccelerator v0.9.5.1, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
La première ligne indique très clairement que PHP est exécuté en mode cli ou apache.
Voici un exemple de code utilisant la fonction php_sapi_name() qui va confirmer, bien sûr, la commande ci-dessus:
<?php $mode_php = php_sapi_name(); if (stristr($mode_php, 'cgi')) { echo 'Php est en mode cgi'; } else { echo 'Php est en mode : ' . $mode_php; } exit; ?>
ou, encore plus simple:
<?php $mode_php = php_sapi_name(); echo 'PHP est exécuté en mode '.$mode_php."\n";?> ?>
Commentaires














