php 7.1 fpm,How to install PHP 7.1, 7.2 and 5.6 as PHP-FPM&nbsp

这篇教程详细介绍了如何在Debian9服务器上安装并配置PHP7.1,7.2和5.6,包括FPM和FastCGI模式。步骤涵盖了从下载源码到编译安装,以及创建systemd服务单元文件,最后在ISPConfig中启用这些PHP版本。
摘要由CSDN通过智能技术生成

Debian 9 ships with PHP 7.0 as default PHP version. Major PHP

versions are not 100% compatible with each other, so a website

might require a newer or older PHP version to work. ISPConfig

supports it to use multiple PHP versions on the same server, the

PHP version can be selected for each website individually in the

website settings. This tutorial shows how to install PHP 7.1, 7.2,

and 5.6 as FPM and FCGI mode alongside PHP 7.0 on a Debian 9

server. The additional PHP versions are installed in the /opt

folder, so their installation does nit affect the default PHP

version

1 Preliminary Note

I will install PHP 7.1, 7.2 and 5.6. Please note that PHP-FPM can

be used on both Apache and Nginx servers while

FastCGI is available only for Apache servers.

2 Install the prerequisites

Install the prerequisites for building PHP and the nano editor that

I will use to edit the config files:

apt-get install

build-essential nano

apt-get install libfcgi-dev

libfcgi0ldbl libjpeg62-turbo-dev libmcrypt-dev

libssl-dev libc-client2007e

libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libkrb5-dev libpq-dev

libxml2-dev libxslt1-dev

ln -s

/usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

cd /usr/include

ln -s x86_64-linux-gnu/curl

(The last command is needed if you build PHP

with --with-imap, because

otherwise ./configure will stop with the following

error:

checking for crypt in -lcrypt...

yes

configure: error: Cannot find imap library (libc-client.a). Please

check your c-client installation.

root@server1:/usr/local/src/php5-build/php-7.1.14#

)

3 Compile PHP

7.1 as PHP-FPM and Fastcgi

Download and extract PHP archive:

mkdir -p /opt/php-7.1

mkdir /usr/local/src/php7.1-build

cd /usr/local/src/php7.1-build

wget

http://de2.php.net/get/php-7.1.14.tar.bz2/from/this/mirror -O

php-7.1.14.tar.bz2

tar jxf php-7.1.14.tar.bz2

cd php-7.1.14/

Configure and build PHP 7.1 as follows (you can adjust

the ./configure command to your needs, take

a look at

./configure --help

to see all available options; if you use a

different ./configure command, it is possible that

additional libraries are required, or the build process will

fail):

./configure

--prefix=/opt/php-7.1 --with-pdo-pgsql --with-zlib-dir

--with-freetype-dir --enable-mbstring --with-libxml-dir=/usr

--enable-soap --enable-calendar --with-curl --with-mcrypt

--with-zlib --with-gd --with-pgsql --disable-rpath

--enable-inline-optimization --with-bz2 --with-zlib

--enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl

--enable-mbregex --enable-exif --enable-bcmath --with-mhash

--enable-zip --with-pcre-regex --with-pdo-mysql --with-mysqli

--with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr

--with-png-dir=/usr --enable-gd-native-ttf --with-openssl

--with-fpm-user=www-data --with-fpm-group=www-data

--with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap

--with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc

--with-xsl --enable-opcache --enable-fpm

The last switch (--enable-fpm) makes sure this PHP version will work with

PHP-FPM.

make

make install

Copy php.ini and php-fpm.conf to the correct

locations:

cp

/usr/local/src/php7.1-build/php-7.1/php.ini-production

/opt/php-7.1/lib/php.ini

cp

/opt/php-7.1/etc/php-fpm.conf.default

/opt/php-7.1/etc/php-fpm.conf

cp /opt/php-7.1/etc/php-fpm.d/www.conf.default /opt/php-7.1/etc/php-fpm.d/www.conf

Open /opt/php-7.1/etc/php-fpm.conf and adjust

the following setting (remove the ; in front of the pid line):

nano

/opt/php-7.1/etc/php-fpm.conf

[...]

pid = run/php-fpm.pid

[...]

Then open /opt/php-7.1/etc/php-fpm.d/www.conf and

adjust the listen line, you must use an unused port

(e.g. 8999;

port 9000 might be in use by Debian's default

PHP-FPM already):

nano /opt/php-7.1/etc/php-fpm.d/www.conf

[...]

listen = 127.0.0.1:8999

[...]

3.1 Create the systemd unit file

Next, we'll create the system unit file which is used to start and

stop the PHP-FPM daemon.

nano /lib/systemd/system/php-7.1-fpm.service

with the following content:

[Unit]

Description=The PHP 7.1 FastCGI Process Manager

After=network.target

[Service]

Type=simple

PIDFile=/opt/php-7.1/var/run/php-fpm.pid

ExecStart=/opt/php-7.1/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.1/etc/php-fpm.conf

ExecReload=/bin/kill -USR2 $MAINPID

[Install]

WantedBy=multi-user.target

Enable the service and reload systemd:

systemctl enable

php-7.1-fpm.service

systemctl daemon-reload

Finally, start PHP-FPM.

systemctl start

php-7.1-fpm.service

To enable the Zend OPcache, open /opt/php-7.1/lib/php.ini...

nano

/opt/php-7.1/lib/php.ini

... and add the following line at the end:

[...]

zend_extension=opcache.so

3.2 Enable Memcache (optional)

In this chapter, I will compile and enable the PHP Memcached

extension.

The first step is to install the libmemcached-dev

package from Debian.

apt-get install

libmemcached-dev

Then create a diretory, download the PHP memcache extension from

Github, unpack the archive and enter the directory that contains

the unpacked files.

mkdir

/usr/local/src/php7.1-build/php-memcache

cd /usr/local/src/php7.1-build/php-memcache

wget

https://github.com/php-memcached-dev/php-memcached/archive/php7.zip

unzip php7.zip

cd php-memcached-php7

Prepare he sources by running the phpize command from PHP 7.1.

/opt/php-7.1/bin/phpize

Configure and build the PHP memcache extension.

./configure

--with-php-config=/opt/php-7.1/bin/php-config

make

make install

To enable the Memcache extension,

open /opt/php-7.1/lib/php.ini...

nano

/opt/php-7.1/lib/php.ini

... and add the following line at the end:

[...]

extension=memcached.so

3.3 Install xDebug extension (optional)

The xDebug module

is a debugging extension for PHP. The installation is optional.

Install xDebug with these commands.

cd /opt/php-7.1/etc

pecl -C ./pear.conf update-channels

pecl -C ./pear.conf install xdebug

Then edit the php.ini file with an editor:

nano

/opt/php-7.1/lib/php.ini

and add the following line at the end of the file:

zend_extension=/opt/php-7.1/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so

Finally restart the php-fpm daemon:

systemctl

start php-7.1-fpm.service

Test the PHP version:

cd /opt/php-7.1/bin

./php --version

The output should be similar to this screenshot.

a4c26d1e5885305701be709a3d33442f.png

Please

note: The screenshot is from PHP

7.1.14, the tutorial gets updated continuously for

new PHP versions but we don't take new screenshots each time, so

the PHP version that you will see on your server might be newer.

The current version of this tutorial is

for php-7.1.14.

3.4 Enable PHP 7.1 in ISPConfig

In ISPConfig 3.1, you can configure the new PHP version

under System >

Additional PHP Versions. On

the Name tab, you just fill in a name for

the PHP version (e.g. PHP

7.1) - this PHP version will be listed under this name in

the website settings in ISPConfig:

a4c26d1e5885305701be709a3d33442f.png

Go to the FastCGI

Settings tab and fill out

the fields as follows:

Path

to the PHP FastCGI

binary: /opt/php-7.1/bin/php-cgi

Path to the php.ini

directory: /opt/php-7.1/lib

a4c26d1e5885305701be709a3d33442f.png

Then g to the PHP-FPM

Settings tab and fill out

the fields as follows:

Path

to the PHP-FPM init

script: php-7.1-fpm

Path to the php.ini

directory: /opt/php-7.1/lib

Path to the PHP-FPM pool

directory: /opt/php-7.1/etc/php-fpm.d

a4c26d1e5885305701be709a3d33442f.png

4 Compile PHP

7.2 as PHP-FPM and Fastcgi

Download and extract PHP from php.net and unpack the tar.bz2

file:

mkdir -p /opt/php-7.2

mkdir /usr/local/src/php7.2-build

cd /usr/local/src/php7.2-build

wget

http://de2.php.net/get/php-7.2.2.tar.bz2/from/this/mirror -O

php-7.2.2.tar.bz2

tar jxf php-7.2.2.tar.bz2

cd php-7.2.2/

Configure and build PHP 7.2 as follows (you can adjust

the ./configure command to your needs, take

a look at

./configure --help

to see all available options; if you use a

different ./configure command, it is possible that

additional libraries are required, or the build process will

fail):

./configure

--prefix=/opt/php-7.2 --with-pdo-pgsql --with-zlib-dir

--with-freetype-dir --enable-mbstring --with-libxml-dir=/usr

--enable-soap --enable-calendar --with-curl --with-zlib --with-gd

--with-pgsql --disable-rpath --enable-inline-optimization

--with-bz2 --with-zlib --enable-sockets --enable-sysvsem

--enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif

--enable-bcmath --with-mhash --enable-zip --with-pcre-regex

--with-pdo-mysql --with-mysqli

--with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr

--with-png-dir=/usr --with-openssl --with-fpm-user=www-data

--with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu

--enable-ftp --with-imap --with-imap-ssl --with-kerberos

--with-gettext --with-xmlrpc --with-xsl --enable-opcache

--enable-fpm

The last switch (--enable-fpm) makes sure this PHP version will work with

PHP-FPM.

make

make install

Copy php.ini and php-fpm.conf to the correct

locations:

cp

/usr/local/src/php7.2-build/php-7.2.2/php.ini-production

/opt/php-7.2/lib/php.ini

cp

/opt/php-7.2/etc/php-fpm.conf.default

/opt/php-7.2/etc/php-fpm.conf

cp /opt/php-7.2/etc/php-fpm.d/www.conf.default /opt/php-7.2/etc/php-fpm.d/www.conf

Open /opt/php-7.2/etc/php-fpm.conf and adjust

the following setting (remove the ; in front of the pid line):

nano

/opt/php-7.2/etc/php-fpm.conf

[...]

pid = run/php-fpm.pid

[...]

Then open /opt/php-7.2/etc/php-fpm.d/www.conf and

adjust the listen line, you must use an unused port

(e.g. 8998;

port 9000 might be in use by Debian's default

PHP-FPM already):

nano /opt/php-7.2/etc/php-fpm.d/www.conf

[...]

listen = 127.0.0.1:8998

[...]

4.1 Create the systemd unit file

Next, we'll create the system unit file which is used to start and

stop the PHP-FPM daemon.

nano /lib/systemd/system/php-7.2-fpm.service

with the following content:

[Unit]

Description=The PHP 7.2 FastCGI Process Manager

After=network.target

[Service]

Type=simple

PIDFile=/opt/php-7.2/var/run/php-fpm.pid

ExecStart=/opt/php-7.2/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.2/etc/php-fpm.conf

ExecReload=/bin/kill -USR2 $MAINPID

[Install]

WantedBy=multi-user.target

Enable the service and reload systemd:

systemctl enable

php-7.2-fpm.service

systemctl daemon-reload

Finally, start PHP-FPM.

systemctl start

php-7.2-fpm.service

To enable the Zend OPcache, open /opt/php-7.2/lib/php.ini...

nano

/opt/php-7.2/lib/php.ini

... and add the following line at the end:

[...]

zend_extension=opcache.so

4.2 Enable Memcache (optional)

In this chapter, I will compile and enable the PHP Memcached

extension.

The first step is to install the libmemcached-dev

package from Debian.

apt-get install

libmemcached-dev

Then create a diretory, download the PHP memcache extension from

Github, unpack the archive and enter the directory that contains

the unpacked files.

mkdir

/usr/local/src/php7.2-build/php-memcache

cd /usr/local/src/php7.2-build/php-memcache

wget

https://github.com/php-memcached-dev/php-memcached/archive/php7.zip

unzip php7.zip

cd php-memcached-php7

Prepare he sources by running the phpize command from PHP 7.2.

/opt/php-7.2/bin/phpize

Configure and build the PHP memcache extension.

./configure

--with-php-config=/opt/php-7.2/bin/php-config

make

make install

To enable the Memcache extension,

open /opt/php-7.2/lib/php.ini...

nano

/opt/php-7.2/lib/php.ini

... and add the following line at the end:

[...]

extension=memcached.so

4.3 Install xDebug extension (optional)

The xDebug module

is a debugging extension for PHP. The installation is optional.

Install xDebug with these commands.

cd /opt/php-7.2/etc

pecl -C ./pear.conf update-channels

pecl -C ./pear.conf install xdebug

Then edit the php.ini file with an editor:

nano

/opt/php-7.2/lib/php.ini

and add the following line at the end of the file:

zend_extension=/opt/php-7.2/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so

Finally restart the php-fpm daemon:

systemctl

start php-7.2-fpm.service

Test the PHP version:

cd /opt/php-7.2/bin

./php --version

The output should be similar to this screenshot.

a4c26d1e5885305701be709a3d33442f.png

Please

note: The screenshot is from PHP

7.2.2, the tutorial gets updated continuously for

new PHP versions but we don't take new screenshots each time, so

the PHP version that you will see on your server might be newer.

The current version of this tutorial is

for php-7.2.2.

4.4 Enable PHP 7.2 in ISPConfig

In ISPConfig 3.1, you can configure the new PHP version

under System >

Additional PHP Versions. On

the Name tab, you just fill in a name for

the PHP version (e.g. PHP

7.2) - this PHP version will be listed under this name in

the website settings in ISPConfig:

a4c26d1e5885305701be709a3d33442f.png

Go to the FastCGI

Settings tab and fill out

the fields as follows:

Path

to the PHP FastCGI

binary: /opt/php-7.2/bin/php-cgi

Path to the php.ini

directory: /opt/php-7.2/lib

a4c26d1e5885305701be709a3d33442f.png

Then g to the PHP-FPM

Settings tab and fill out

the fields as follows:

Path

to the PHP-FPM init

script: php-7.2-fpm

Path to the php.ini

directory: /opt/php-7.2/lib

Path to the PHP-FPM pool

directory: /opt/php-7.2/etc/php-fpm.d

a4c26d1e5885305701be709a3d33442f.png

5 Compile PHP 5.6

as PHP-FPM and Fastcgi

Download PHP and unpack the tar.bz2 archive:

mkdir -p /opt/php-5.6

mkdir /usr/local/src/php5.6-build

cd /usr/local/src/php5.6-build

wget

http://de2.php.net/get/php-5.6.33.tar.bz2/from/this/mirror -O

php-5.6.33.tar.bz2

tar jxf php-5.6.33.tar.bz2

The OpenSSL version in Debian 9 is too new for PHP 5.6, so we'll

have to compile an older version in /opt/openssl to use it with PHP

5.6.

cd /tmp

wget

"https://www.openssl.org/source/old/1.0.1/openssl-1.0.1t.tar.gz"

tar xzf openssl-1.0.1t.tar.gz cd openssl-1.0.1t

./config shared --prefix=/opt/openssl

make -j $(nproc) && make install

ln -s /opt/openssl/lib /opt/openssl/lib/x86_64-linux-gnu

wget -O /opt/openssl/ssl/cert.pem

"http://curl.haxx.se/ca/cacert.pem"

Create a symlink so PHP will find the freetype, libcrypto and

libssl libraries.

mkdir

/usr/include/freetype2/freetype

ln -s /usr/include/freetype2/freetype.h

/usr/include/freetype2/freetype/freetype.h

ln -s /opt/openssl/lib/libcrypto.so.1.0.0

/usr/lib/x86_64-linux-gnu/

ln -s /opt/openssl/lib/libssl.so.1.0.0

/usr/lib/x86_64-linux-gnu/

ln -fs /opt/openssl /usr/local/ssl

Enter the folder which contains the unpacked PHP source files.

cd /usr/local/src/php5.6-build/php-5.6.33/

Configure and build PHP 5.6 as follows (you can adjust

the ./configure command to your needs, take

a look at

./configure --help

to see all available options; if you use a

different ./configure command, it is possible that

additional libraries are required, or the build process will

fail):

./configure

--prefix=/opt/php-5.6 --with-pdo-pgsql --with-zlib-dir

--with-freetype-dir --enable-mbstring --with-libxml-dir=/usr

--enable-soap --enable-calendar --with-curl --with-mcrypt

--with-zlib --with-pgsql --disable-rpath

--enable-inline-optimization --with-bz2 --with-zlib

--enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl

--enable-mbregex --enable-exif --enable-bcmath --with-mhash

--enable-zip --with-pcre-regex --with-pdo-mysql --with-mysqli

--with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr

--with-png-dir=/usr --enable-gd-native-ttf

--with-openssl=/opt/openssl --with-fpm-user=www-data

--with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu

--enable-ftp --with-kerberos --with-gettext --with-xmlrpc

--with-xsl --enable-opcache --enable-fpm

The last switch (--enable-fpm) makes sure this PHP version will work with

PHP-FPM.

make

make install

Copy php.ini and php-fpm.conf to the correct

locations:

cp

/usr/local/src/php5.6-build/php-5.6.33/php.ini-production

/opt/php-5.6/lib/php.ini

cp

/opt/php-5.6/etc/php-fpm.conf.default

/opt/php-5.6/etc/php-fpm.conf

Open /opt/php-5.6/etc/php-fpm.conf and adjust

the following setting:

nano

/opt/php-5.6/etc/php-fpm.conf

[...]

pid = run/php-fpm.pid

[...]

user = www-data

group = www-data

[...]

listen = 127.0.0.1:8997

[...]

include=/opt/php-5.6/etc/php-fpm.d/*.conf

5.1 Create the systemd unit file

Next, we'll create the system unit file which is used to start and

stop the PHP-FPM daemon.

nano /lib/systemd/system/php-5.6-fpm.service

with the following content:

[Unit]

Description=The PHP 5.6 FastCGI Process Manager

After=network.target

[Service]

Type=simple

PIDFile=/opt/php-5.6/var/run/php-fpm.pid

ExecStart=/opt/php-5.6/sbin/php-fpm --nodaemonize --fpm-config /opt/php-5.6/etc/php-fpm.conf

ExecReload=/bin/kill -USR2 $MAINPID

[Install]

WantedBy=multi-user.target

Enable the service and reload systemd:

systemctl enable

php-5.6-fpm.service

systemctl daemon-reload

Finally, start PHP-FPM.

systemctl start

php-5.6-fpm.service

To enable the Zend OPcache, open /opt/php-5.6/lib/php.ini...

nano

/opt/php-5.6/lib/php.ini

... and add the following line at the end:

[...]

zend_extension=opcache.so

5.2 Enable Memcache (optional)

In this chapter, I will compile and enable the PHP Memcached

extension.

The first step is to install the libmemcached-dev

package from Debian.

apt-get install

libmemcached-dev

Then run these commands to build the memcache

extension

cd /opt/php-5.6/etc

pecl -C ./pear.conf update-channels

pecl -C ./pear.conf install memcache

To enable the Memcache extension,

open /opt/php-5.6/lib/php.ini...

nano

/opt/php-5.6/lib/php.ini

... and add the following line at the end:

[...]

extension=memcache.so

Finally restart the php-fpm daemon:

systemctl

start php-5.6-fpm.service

Test the PHP version:

cd /opt/php-5.6/bin

./php --version

The output should be similar to this screenshot.

a4c26d1e5885305701be709a3d33442f.png

Please

note: The screenshot is from PHP

5.6.33, the tutorial gets updated continuously for

new PHP versions but we don't take new screenshots each time, so

the PHP version that you will see on your server might be newer.

The current version of this tutorial is

for php-5.6.33.

5.4 Enable PHP 5.6 in ISPConfig

In ISPConfig 3.1, you can configure the new PHP version

under System >

Additional PHP Versions. On

the Name tab, you just fill in a name for

the PHP version (e.g. PHP

5.6) - this PHP version will be listed under this name in

the website settings in ISPConfig:

a4c26d1e5885305701be709a3d33442f.png

Go to the FastCGI

Settings tab and fill out

the fields as follows:

Path

to the PHP FastCGI

binary: /opt/php-5.6/bin/php-cgi

Path to the php.ini

directory: /opt/php-5.6/lib

a4c26d1e5885305701be709a3d33442f.png

Then g to the PHP-FPM

Settings tab and fill out

the fields as follows:

Path

to the PHP-FPM init

script: php-5.6-fpm

Path to the php.ini

directory: /opt/php-5.6/lib

Path to the PHP-FPM pool

directory: /opt/php-5.6/etc/php-fpm.d

a4c26d1e5885305701be709a3d33442f.png

6 Links

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值