As I’m writing this, the calendar shows April 14 2015. According to the PHP 7.0 timeline, it has a projected release date of November 2015. But if you want to try it out (to check out the speed), you can already do so.
UPDATE: PHP 7 stable was released December 3, 2015. You might want to use a stable version instead of nightlies, so head over to How to upgrade to PHP 7 on Ubuntu.
This guide assumes you already know how to setup PHP5-FPM with your web server. You might want to setup that first and make sure it is running fine with your web server of choice.
Oh, and all commands are executed as root. Use sudo if you like to.
[bjornad]
First of all, head on over to the PHP7 Nightly Builds page at Zend and download the ZIP for DEB.
$ wget http://repos.zend.com/zend-server/early-access/php7/php-7.0-latest-DEB-x86_64.tar.gz
(The URL may or may not change, so check the above mentioned page first).
Zend also provides an installation guide for Ubuntu. It is missing documentation for installing as FPM, but we can at least use it as a starting point.
Install the required dependencies according to the Zend install guide mentioned (again, check the Zend page first):
$ apt-get update && apt-get install -y \
libcurl4-openssl-dev \
libmcrypt-dev \
libxml2-dev \
libjpeg-dev \
libfreetype6-dev \
libmysqlclient-dev \
libt1-dev \
libgmp-dev \
libpspell-dev \
libicu-dev \
librecode-dev
Then, unpack the archive. Note that the following command will unpack to /usr/local/php7 – Also note that the command on the Zend page uses an incorrect file name:
$ tar xzPf php-7*.tar.gz
Now you need to create your php-fpm.conf
(use /usr/local/php7/etc/php-fpm.conf
for your sanity). Use this as a starting point and adjust to your liking:
[global]
pid = /run/php7-fpm.pid
error_log = /var/log/php7-fpm.log
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 10
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
Make sure the listen
config does not collide with your php5-fpm config. Change port or socket file name if needed.
Next, you need the System V init script in /etc/init.d/php7-fpm
. I took the php5-fpm script from Ondřej Surý as a basis and just fixed the paths to php7-fpm. Feel free to download it here and make it executable:
$ wget -O /etc/init.d/php7-fpm "https://gist.github.com/bjornjohansen/bd1f0a39fd41c7dfeb3a/raw/f0312ec54d1be4a8f6f3e708e46ee34d44ef4657/etc%20inid.d%20php7-fpm"
$ chmod a+x /etc/init.d/php7-fpm
Then you need the init script in /etc/init/php7-fpm.conf
. This one is also just an adaptation of Ondřej Surý’s script. Download from here.
$ wget -O /etc/init/php7-fpm.conf "https://gist.github.com/bjornjohansen/9555c056a7e8d1b1947d/raw/15920fa2f447358fdd1c79eecd75a53aaaec76f9/etc%20init%20php7-fpm"
You also need the checkconf script. Create the file /usr/local/lib/php7-fpm-checkconf
and put this in it:
#!/bin/sh
set -e
errors=$(/usr/local/php7/sbin/php-fpm --fpm-config /usr/local/php7/etc/php-fpm.conf -t 2>&1 | grep "\[ERROR\]" || true);
if [ -n "$errors" ]; then
echo "Please fix your configuration file…"
echo $errors
exit 1
fi
exit 0
Make it executable:
$ chmod a+x /usr/local/lib/php7-fpm-checkconf
Make sure php7-fpm starts when your system boots:
$ update-rc.d php7-fpm defaults
Start php7-fpm
$ service php7-fpm start
Have fun!