29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / Internet / Serveur web Apache / Apache 1.3.37 : compiler et installer PHP 4.4.7 (V)





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

Apache 1.3.37 : compiler et installer PHP 4.4.7 (V)

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.

Octavio Paz

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