dissabte, 21 de març del 2009

Compilant PHP 5.3

En un servidor Ubuntu 8.04 LTS de proves per a la PHP TestFest instal·larem la versió 5.3 de PHP desde el codi font original preparat per a compilar, enlloc del clàssic apt-get install php5. Al fer-ho d'aquesta manera les actualitzacions les haurem de fer manualment i no amb el senzill apt-get update.

El grup PHP de Melbourne ha fet una HowTo molt interessant per a compilar el PHP i seguirem les seves pases.

Treballarem com a root:
sudo su -

Instal·lem la paqueteria prèvia:
apt-get install apache2 apache2-threaded-dev apache2-mpm-prefork apache2-utils aspell curl libaspell-dev libbz2-dev libc-client-dev libcurl4-openssl-dev libfreetype6 libfreetype6-dev libjpeg62 libjpeg62-dev libmcrypt4 libmcrypt-dev libmhash2 libmhash-dev libming-dev libmysqlclient15-dev libncurses-dev libpng3 libpng12-dev libpspell-dev libreadline-dev libsasl2-dev libsnmp-dev libt1-5 libt1-dev libtidy-dev libxml2 libxml2-dev libxml2-utils libxpm4 libxpm-dev libxslt1-dev make mysql-client mysql-server build-essential autoconf

Descarregarem la darrera versió de PHP a la plana on son els snapshots.
cd ~
mkdir download
cd download/
wget http://snaps.php.net/php5.3-200903210730.tar.bz2
tar xjf php5.3-200903210730.tar.bz2
cd php5.3-200903210730
chown -R root.root .


El make install de PHP creu que el LoadModules està a /etc/apache2/httpd.conf. Ubuntu no empra aquest arxiu, però la instal·lació de PHP cascarà. Farem un workarroud:
echo "# Afegit només per a make install PHP" > /etc/apache2/httpd.conf
echo "LoadModule vhost_alias_module /usr/lib/apache2/modules/mod_vhost_alias.so" >> /etc/apache2/httpd.conf


El configurem amb similars mòduls que els de Melbourne:
./configure --with-apxs2=/usr/bin/apxs2 --disable-short-tags --with-openssl --with-zlib --enable-bcmath --with-bz2=/bin/bzip2 --enable-calendar --with-curl --with-curlwrappers --enable-exif --enable-ftp --with-gd --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-xpm-dir=/usr/lib --with-t1lib --enable-gd-native-ttf --enable-gd-jis-conv --with-gettext --with-imap --with-imap-ssl --with-ldap --with-ldap-sasl --enable-mbstring --with-mcrypt --with-mhash --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql --with-pspell --with-readline --with-snmp --enable-soap --enable-sockets --without-sqlite --enable-sqlite-utf8 --with-tidy --enable-wddx --with-xmlrpc --with-xsl --enable-zip --with-pear --with-kerberos

I ara procedim a compilar el PHP, en una màquina virutal amb 512 MB de RAM i dedicant un sol processador de 2.6GHz triga uns 6 minuts.
make && make install

Instal·larem el php.ini preparat per a desenvolupament
cp php.ini-development /usr/local/lib/php.ini

Adaptarem la configuració a Ubuntu i esborrarem l'httpd.conf per a evitar confusions.
cat /etc/apache2/httpd.conf | grep libphp5 > /etc/apache2/mods-available/php5.load
rm -f /etc/apache2/httpd.conf && touch /etc/apache2/httpd.conf


Afegim el mòdul a l'Apache
a2enmod php5
apache2ctl configtest && apache2ctl restart
/etc/init.d/apache2 restart


Per a certificar que tot funciona correctament farem
echo "<?php phpinfo();?>" > /var/www/index.php
rm /var/www/index.html

i obrirem un navegador que apunti a la IP del servidor que hem muntat, et voilà: