Recently I was trying install latest PHP 5.4.x (at the moment of writing this is 5.4.10) version on my stable Debian OS (v6.0-squeeze-32bit).
As far as you may know, stable Debian proposes PHP-5.3.4 as latest available release. I wanted to use embedded into PHP-5.4 web-server.
I was thinking that install PHP-5.4 would be faster process then configuring new virtual host in Apache. Yep, lazy me! 🙂
Well, spoiling the story, I would like to say, that the overall process took 2-2.5 hours from me before I was able to launch my scripts.
To be honest, that was my first time when I was compiling PHP from source, and I feel I got great experience with that!
But okay, let’s look at the process step-by-step.
First of all, you may need install “libxml2-dev” linux library (don’t remember why, though :-)).
Oh, wait! Looks like it needed for you be able to configure you PHP installator.
sudo apt-get install libxml2-dev
I also believe that most web developers need to use DB with theirs scripts, thus they may need PDO php extension.
So, you need to compile PHP with this directive:
configure --with-pdo-mysql --with-mysql
(see http://php.net/manual/en/ref.pdo-mysql.php for more details)
Usually, good devloper uses debug tools extensively. As we all know most popular PHP debugger is a xdebug.
This package could be installed from pecl repository.
Before asking pecl to install xdebug, make sure you have php5-dev package installed in your system. With that package phpize is being shipped, which is required to install PHP extensions through pecl.
If you don’t have php5-dev install, you are going get this error message:
ERROR: `phpize’ failed
and here is your next command:
sudo apt-get install php5-dev
After that, you will be able install xdebug extension with help of pecl:
Next. Let’s assume you work with not only documents written solely in English, but with some other languages (Italian, Portugeese, Russion, Dutch, etc.)
Also let’s assume you need to handle dates written in non-english format (btw, about that look for my article about how one can handle dates written in languages different from English). php5-intl extension comes to help! Here http://php.net/manual/en/intl.installation.php you will find information how to enable this extension:
If PHP’s configurator shows error message
“configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.”
you need install this Linux package:
apt-get install libicu-dev
These are development files for International Components for Unicode.
Next, it may happen that you need load remote http resources. Usually, that is done with curl (php5-curl).
I was not enable that extension because faced such message:
configure: error: Please reinstall the libcurl distribution
In such case you need install this Linux package:
sudo apt-get install libcurl4-gnutls-dev
(thanks to http://phpconfigure.com/2011/04/configure-error-please-reinstall-the-libcurl-distribution/)
In case if you need to deal with multibyte encodings and use PHP’s functions prefixed with mb_*, you need enable that as well:
Okay, as I said, after couple hours of fight I was able to finish with this configuration options and directives:
sudo ./configure --with-pdo-mysql --with-mysql --with-curl --enable-intl --enable-mbstring=all
As I said at the beginning, I was hoping that install PHP-5.4 would be faster then configure virtual host. How far away from truth was I!..
But I do not regret about my choice, because now I feel strong in believe that I have mastered some important things and have grown my professional level!
Fell free to add comments and ask things that left unclear for you.