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.
$ 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
/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
$ service php7-fpm start