Comment utiliser PHP 4.4.9 (FastCGI) avec Apache et ISPConfig 3 (Debian Wheezy)
Depuis ISPConfig 3.0.5, il est possible d'utiliser plusieurs versions de PHP sur un serveur et de sélectionner la version PHP optimale pour un site Web. Si vous avez des sites Web très anciens sur votre serveur, ils ne fonctionneront peut-être pas avec PHP5, mais uniquement avec PHP4. Ce tutoriel montre comment compiler PHP 4.4.9 en tant que version FastCGI à utiliser avec Apache2 sur un serveur Debian Wheezy. Cette version de PHP peut être utilisée avec le PHP par défaut (installé via apt) dans ISPConfig.
Je n'émets aucune garantie que cela fonctionnera pour vous !
1 Remarque préliminaire
PHP-FPM n'est pas disponible pour PHP4, donc je décris juste comment construire une version FastCGI de PHP4. FastCGI est disponible uniquement pour les serveurs Apache, vous ne pouvez donc pas l'utiliser avec nginx..
2 Compiler PHP 4.4.9 (FastCGI)
Installez les prérequis pour compiler à partir du code source :
apt-get install build-essential
PHP 4.4.9 ne compilera pas avec les versions modernes d'OpenSSL, nous devons donc d'abord installer une ancienne version d'OpenSSL (0.9.8x) :
cd /tmp
wget http://www.openssl.org/source/openssl-0.9.8x.tar.gz
tar xvfz openssl-0.9.8x.tar.gz
cd openssl -0.9.8x
./config --prefix=/usr/local/openssl-0.9.8
make
make install
Téléchargez et extrayez PHP 4.4.9 :
mkdir /opt/phpfcgi-4.4.9
mkdir /usr/local/src/php4-build
cd /usr/local/src/php4-build
wget http://de. php.net/get/php-4.4.9.tar.bz2/from/this/mirror -O php-4.4.9.tar.bz2
tar jxf php-4.4.9.tar.bz2
cd php-4.4.9/
Créez les liens symboliques nécessaires :
ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/
ln -s /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/
ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 /usr/lib/
ln -s /usr/lib/x86_64-linux-gnu/libexpat.so /usr/ lib/
ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so /usr/lib/libmysqlclient.so
mkdir /usr/kerberos
ln -s /usr/ lib/x86_64-linux-gnu /usr/kerberos/lib
Ensuite, nous devons désactiver les fonctions mysql_drop_db et mysql_create_db car sinon vous obtiendrez ces erreurs lorsque vous essaierez de compiler PHP 4.4.9 :
erreur :référence indéfinie à 'mysql_drop_db'
erreur :référence indéfinie à 'mysql_create_db'
Ouvrez /usr/local/src/php4-build/php-4.4.9/ext/mysql/php_mysql.c...
vi /usr/local/src/php4-build/php-4.4.9/ext/mysql/php_mysql.c
... et allez à la ligne 1131. À partir de là, commentez les deux fonctions :
[...] /*PHP_FUNCTION(mysql_create_db) { zval **db, **mysql_link; int id; php_mysql_conn *mysql; switch(ZEND_NUM_ARGS()) { case 1: if (zend_get_parameters_ex(1, &db)==FAILURE) { RETURN_FALSE; } id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); CHECK_LINK(id); break; case 2: if (zend_get_parameters_ex(2, &db, &mysql_link)==FAILURE) { RETURN_FALSE; } id = -1; break; default: WRONG_PARAM_COUNT; break; } php_error_docref(NULL TSRMLS_CC, E_NOTICE, "This function is deprecated, please use mysql_query() to issue a SQL CREATE DATABASE statement instead."); ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink); PHPMY_UNBUFFERED_QUERY_CHECK(); convert_to_string_ex(db); if (mysql_create_db(&mysql->conn, Z_STRVAL_PP(db))==0) { RETURN_TRUE; } else { RETURN_FALSE; } }*/ /* }}} */ /* {{{ proto bool mysql_drop_db(string database_name [, int link_identifier]) Drops (delete) a MySQL database */ /*PHP_FUNCTION(mysql_drop_db) { zval **db, **mysql_link; int id; php_mysql_conn *mysql; switch(ZEND_NUM_ARGS()) { case 1: if (zend_get_parameters_ex(1, &db)==FAILURE) { RETURN_FALSE; } id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); CHECK_LINK(id); break; case 2: if (zend_get_parameters_ex(2, &db, &mysql_link)==FAILURE) { RETURN_FALSE; } id = -1; break; default: WRONG_PARAM_COUNT; break; } php_error_docref(NULL TSRMLS_CC, E_NOTICE, "This function is deprecated, please use mysql_query() to issue a SQL DROP DATABASE statement instead."); ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink); convert_to_string_ex(db); if (mysql_drop_db(&mysql->conn, Z_STRVAL_PP(db))==0) { RETURN_TRUE; } else { RETURN_FALSE; } }*/ /* }}} */ [...] |
Installez les prérequis pour compiler PHP5 (dans notre cas, cela couvre également les prérequis pour compiler PHP4) :
apt-get build-dep php5
Configurez et compilez PHP 4.4.9 comme suit (vous pouvez ajuster la commande ./configure à vos besoins, jetez un œil à
./configure --help
pour voir toutes les options disponibles ; si vous utilisez une commande ./configure différente, il est possible que des bibliothèques supplémentaires soient requises ou que le processus de construction échoue) :
./configure \
--prefix=/opt/phpfcgi-4.4.9 \
--with-pdo-pgsql \
--with-zlib-dir \
- -with-freetype-dir \
--enable-mbstring \
--with-libxml-dir=/usr \
--enable-soap \
--enable- calendrier \
--avec-curl \
--avec-mcrypt \
--avec-zlib \
--avec-gd \
--avec- pgsql \
--disable-rpath \
--enable-inline-optimization \
--with-bz2 \
--with-zlib \
-- enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-pcntl \
--enable-mbregex \
-- with-mhash \
--enable-zip \
--with-pcre-regex \
--with-mysql=/usr \
--with-mysql-sock =/var/run/mysqld/mysqld.sock \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--enable- gd-native-ttf \
--with-openssl=/usr/local/openssl-0.9.8 \
--with-openssl-dir=/usr/local/openssl-0.9.8 \
--with-libdir=/lib/x86_64-linux-gnu \
--enable-ftp \
--with-imap \
--with-imap-ssl \
--avec-kerberos \
--avec- gettext \
--with-expat-dir=/usr \
--enable-fastcgi
Le dernier commutateur (--enable-fastcgi) garantit que cette version de PHP fonctionnera avec FastCGI.
faire
faire installer
Copiez php.ini au bon emplacement :
cp /usr/local/src/php4-build/php-4.4.9/php.ini-recommended /opt/phpfcgi-4.4.9/lib/php.ini
C'est tout - nous allons maintenant ajouter le module APC à notre installation PHP 4.4.9 :
cd /tmp
wget http://pecl.php.net/get/APC-3.0.19.tgz
tar xvfz APC-3.0.19.tgz
cd APC-3.0.19
/opt/phpfcgi-4.4.9/bin/phpize
./configure --enable-apc --enable-apc-mmap --with-php-config=/opt/phpfcgi-4.4. 9/bin/php-config
make
make install
Ensuite, ouvrez /opt/phpfcgi-4.4.9/lib/php.ini...
vi /opt/phpfcgi-4.4.9/lib/php.ini
... et définissez extension_dir ="/opt/phpfcgi-4.4.9/lib/php/extensions/no-debug-non-zts-20020429" et ajoutez la ligne extension=apc.so à la fin du fichier (vous peut également configurer des paramètres APC supplémentaires) :
[...] extension_dir = "/opt/phpfcgi-4.4.9/lib/php/extensions/no-debug-non-zts-20020429" [...] extension=apc.so apc.enabled=1 apc.shm_segments=1 apc.shm_size=512 apc.ttl=0 apc.user_ttl=600 apc.gc_ttl=600 apc.enable_cli=1 apc.mmap_file_mask=/tmp/apc.XXXXXX ;apc.mmap_file_mask=/dev/zero ;apc.shm_segments = 5 |
Dans ISPConfig 3.0.5, vous pouvez configurer la nouvelle version PHP sous Système> Versions PHP supplémentaires. Dans l'onglet Nom, il vous suffit de saisir un nom pour la version de PHP (par exemple, PHP 4.4.9) - cette version de PHP sera répertoriée sous ce nom dans les paramètres du site Web dans ISPConfig :
Allez dans l'onglet Paramètres FastCGI (l'onglet Paramètres PHP-FPM peut être laissé vide) et remplissez les champs comme suit :
Si tout fonctionne comme prévu, vous pouvez maintenant choisir PHP 4.4.9 pour un site Web dans ISPConfig. Vous pouvez vérifier la version PHP d'un site Web en créant un fichier PHP avec phpinfo(); fonction dedans et en appelant ce fichier dans votre navigateur :
3 liens
- PHP :http://www.php.net/
- ISPConfig :http://www.ispconfig.org/
- Ubuntu :http://www.ubuntu.com/
À propos de l'auteur
Falko Timme est le propriétaire de Timme Hosting (hébergement web nginx ultra-rapide). Il est le mainteneur principal de HowtoForge (depuis 2005) et l'un des principaux développeurs d'ISPConfig (depuis 2000). Il a également contribué au livre O'Reilly "Linux System Administration".