PHP (sigle de PHP: Hypertext Preprocessor3) est un langage de scripts libre principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP, mais pouvant également fonctionner comme n'importe quel langage interprété de façon locale, en exécutant les programmes en ligne de commande. PHP est un langage impératif disposant depuis la version 5 de fonctionnalités de modèle objet complètes5. En raison de la richesse de sa bibliothèque, on désigne parfois PHP comme une plate-forme plus qu'un simple langage.
cd /root/sources wget http://fr2.php.net/get/php-5.2.17.tar.gz/fromfr.php.net/mirror mv mirror php-5.2.17.tgz tar xvzf php-5.2.17.tgz cd php-5.2.17
On constate aussi qu'un certain nombre d'extensions “couramment utilisées” sont déja dispo dans le Directory ext.
aptitude install zip locate build-essential libxml2 libxml2-dev openssl libssl-dev libcurl4-gnutls-dev libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev libfreetype6 libfreetype6-dev libgmp3-dev libgmp3c2 libgmpxx4ldbl libmcrypt4 libmcrypt-dev libmhash2 libmhash-dev libmysqlclient15-dev libxslt1-dev libc-client2007b-dev gettext
'./configure' \ '--prefix=/usr/local/php-5.2.17' \ '--disable-cli' \ '--enable-cgi' \ '--enable-fastcgi' \ '--with-mysql' \ '--with-mysqli' \ '--enable-bcmath' \ '--with-zlib-dir=/usr/include/' \ '--enable-simplexml' \ '--with-xsl' \ '--with-gd' \ '--with-openssl' \ '--enable-magic-quotes' \ '--enable-exif' \ '--enable-ftp' \ '--enable-sockets' \ '--enable-shmop' \ '--enable-mbstring' \ '--enable-sysvsem' \ '--enable-sysvshm' \ '--enable-calendar' \ '--with-png-dir=/usr' \ '--with-iconv' \ '--with-jpeg-dir=/usr' \ '--with-freetype-dir=/usr' \ '--with-pdo-mysql' \ '--with-mcrypt' \ '--enable-shmop' \ '--with-gmp' \ '--with-curl' \ '--with-mhash' \ '--enable-soap' \ '--with-imap' \ '--with-imap-ssl' \ '--with-kerberos' \ '--enable-dba' \ '--enable-zip' \ '--with-gettext'
make
ça prend du temps, ne soyez pas étonné :
real 3m49.165s user 2m41.554s sys 0m26.350s
make install
Le moteur moteur PHP 5.2.17 en CGI est disponible et fonctionnel :
Après compilation du binaire de PHP qui intègre “en dur” les extensions définies, on va ajouter des extensions dynamiquement.
Pour nos confrères les devellopeurs : The Xdebug extension helps you debugging your script by providing a lot of valuable debug information.
cd /usr/local/php-5.2.17/ mkdir extensions cd extensions wget http://www.xdebug.org/files/xdebug-2.1.1.tgz . tar xvzf xdebug-2.1.1.tgz cd xdebug-2.1.1 cat README /usr/local/php-5.2.17/bin/phpize ./configure --enable-xdebug --with-php-config=/usr/local/php-5.2.17/bin/php-config make
La compilation nous retourne le PATH de la librairie exécutable :
mkdir /usr/local/php-5.2.17/bin/ext cp /usr/local/php-5.2.17/extensions/xdebug-2.1.1/modules/xdebug.so /usr/local/php-5.2.17/bin/ext
vi /etc/php5/apache2/security/php.ini
zend_extension= /usr/local/php-5.2.17/bin/ext/xdebug.so
L'extension est fonctionnelle :
Contexte :
Vous disposez d'un LAMP avec par exemple un PHP (5.2.X), et vous souhaitez disposez des 2 versions de PHP sans pour autant relacher votre sécurité avec Apache2 et suPHP.
Ressources :
aptitude install libapache2-mod-suphp
[handlers] ;Handler for php-scripts application/x-httpd-php526=php:/usr/bin/php-cgi application/x-httpd-php536=php:/usr/local/php-5.3.6/bin/php-cgi application/x-httpd-php5217=php:/usr/local/php-5.2.17/bin/php-cgi
Pour cet exemple, j'ai 3 moteurs PHP : 5.2.6 (paquet Debian)/ 5.3.6 (compilé) et 5.2.17 (compilé).
<IfModule mod_suphp.c>
# Handler du PHP-CGI en 5.3.6
AddType application/x-httpd-php536 .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-php536
# Handler du PHP-CGI en 5.2.17
AddType application/x-httpd-php5217 .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-php5217
# Handler du PHP-CGI en 5.2.6
AddType application/x-httpd-php526 .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-php526
.....
Cette méthode permet de pouvoir surcharger la conf de suphp dans les vhosts des instances d'Apache !!
Vous pouvez vous permettre maintenant d’appeler différentes versions de PHP toujours en bénéficiant de la sécurité de suPHP (contrôle owner/group/DocumentRoot…) en appelant le handler de votre choix dans le VHOST :
AddType application/x-httpd-php5217 .php .php3 .php4 .php5 .phtml
Si toutefois, vous ne précisez pas cette spécification, suPHP prendra le dernier lu dans le fichier /etc/apache2/mods-enabled/suphp/suphp.conf .