Install the Latest version PHP on CentOS
Contents
Install the Latest version PHP on CentOS
I currently run a development server that I need to use different versions of php, including the most recent version of php. You will notice that yum ususally does not have the lastest version of php. So you will probably need to compile the most recent version your self.
Below are the steps used to compile the lastest version PHP.
1) Install Tools to compile
You can use yum to install the tools and other files
yum install gcc-c++ httpd httpd-devel apr-devel libxml2-devel zlib zlib-devel mysql-devel openssl-devel -y
I will assume you already have httpd and mysql installed on your server, if not you might want to install them now as well.
2) Download the latest version PHP
Any time I need to download remote files I put them in /downloads, so lets create this directory if its not already created
mkdir /downloads && cd /downloads
At the time of this how to, the latest version is php5.5.11 so lets download it from http://us3.php.net/downloads.php
wget http://us1.php.net/get/php-5.5.11.tar.gz/from/this/mirror
This file will save as mirror, so lets change the name to php-5.5.11.tar.gz
mv mirror php-5.5.11.tar.gz
Extract the tarball
tar -zxfv php-5.5.11.tar.gz
Move into that directory
cd php-5.5.11
Configure and Make
To get a list of configure options you can run
./configure --help
Here are the options I am currently using, you can and will propbably want to adjust this string depending on your needs.
./configure --with-config-file-path=/etc/php55 --with-config-file-scan-dir=/etc/php55.d --with-apxs2 --with-libdir=lib64/php55 --with-zlib --with-mysql --with-mysqli --enable-ftp --with-openssl --enable-xml --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --target=x86_64-redhat-linux-gnu
You will notice that I adjust some of the folders to read php55, this is because I have other versions of php installed on this server and I like having the ability to switch between different version of php for development reasons.
Now its time to make and install php
make && make install
Now lets change some files
By default this will become the default installation, but as I have stated, this is just one version of php on the server.
Lets locate and change the php file
which php /usr/local/bin/php
So lets move this php55 and leave it as the current default as well
cp /usr/local/bin/php /usr/local/bin/php55
Now lets confirm its working
php55 -v PHP 5.5.11 (cli) (built: Apr 28 2014 00:09:03) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
Now lets change the .so file that apache calls
mv /usr/lib64/httpd/modules/libphp5.so /usr/lib64/httpd/modules/libphp55.so
Now adjust apache to use the new libphp55.so location
vim /etc/httpd/conf/httpd.conf
Find the file that now says
LoadModule php5_module /usr/lib64/httpd/modules/libphp5.so
and change it to point to the new file
LoadModule php5_module /usr/lib64/httpd/modules/libphp55.so
Now lets make the php55 config location and additional modules directory.
mkdir -p /etc/php55/ && mkdir -p /etc/php55.d/
Now lets install the php.ini file,
cp /download/php-5.5.11/php.ini-production /etc/php55/php.ini
Restart Apache/httpd
Lets restart apache/httpd to confirm everything is working correctly
httpd -t
If nothing is wrong, restart time
httpd -k restart
Testing apache with phpinfo file
Lets create a phpinfo file
echo "<?php phpinfo();" > /var/www/html/phpinfo.php
Check out that file in your browser to verify its using the correct version of php.