PHP установка · 7 min read · Oct 28, 2025

Как установить PHP 7.1.16 как PHP-FPM и FastCGI для ISPConfig 3.1 на Debian 8 (Jessie)

Последняя версия PHP 7.1 доступна для загрузки на Github и зеркалах PHP. PHP 7.1 — это следующее поколение языка программирования PHP, он в 2 раза быстрее, чем PHP 5.6, и в 14 раз быстрее, чем PHP 5.0, согласно примечаниям к выпуску. Новая версия PHP не является на 100% совместимой с PHP 5.x, так как некоторые устаревшие API были удалены, поэтому разумно начать тестирование ваших веб-сайтов на совместимость с этим новым выпуском. Это можно сделать легко и без влияния на все сайты на вашем сервере, используя функцию многоверсионного PHP в ISPConfig 3. Версия PHP может быть выбрана в настройках сайта ISPConfig 3 для каждого сайта индивидуально. Эта функция работает с PHP-FPM и FastCGI. Этот учебник показывает, как собрать новую версию PHP 7.1 как версию PHP-FPM и FastCGI на сервере Debian Jessie. Эта сборка PHP 7.1 включает множество встроенных расширений и Zend OPcache и Memcached в качестве загружаемых модулей.

1 Предварительная заметка

Я установлю PHP 7.1, который был выпущен как окончательная версия несколько дней назад. Обратите внимание, что PHP-FPM может использоваться как на серверах Apache, так и на Nginx, в то время как FastCGI доступен только для серверов Apache.

С более старыми версиями PHP PHP-FPM и FastCGI были взаимно исключающими, поэтому бинарные файлы FPM и FastCGI должны были собираться отдельно. С PHP 7.1 можно собрать один бинарный файл, который поддерживает режимы FPM и FCGI.

2 Компиляция PHP 7.1 с PHP-FPM и Fastcgi

Скачайте и извлеките PHP 7.1 с Github:

mkdir -p /opt/php-7.1  
mkdir /usr/local/src/php7-build  
cd /usr/local/src/php7-build  
wget http://de2.php.net/get/php-7.1.16.tar.bz2/from/this/mirror -O php-7.1.16.tar.bz2  
tar jxf php-7.1.16.tar.bz2
cd php-7.1.16/

Установите необходимые пакеты для сборки PHP 7.1 и редактор nano, который я буду использовать для редактирования конфигурационных файлов:

apt-get install build-essential nano autoconf
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng12-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

(Последняя команда необходима, если вы собираете PHP с –with-imap, потому что в противном случае ./configure остановится с следующей ошибкой:

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.0.7#

)

Настройте и соберите PHP 7.1 следующим образом (вы можете настроить команду ./configure под свои нужды, посмотрите на

./configure --help

чтобы увидеть все доступные опции; если вы используете другую команду ./configure, возможно, потребуются дополнительные библиотеки, или процесс сборки завершится неудачей):

./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

Последний переключатель ( –enable-fpm) гарантирует, что эта версия PHP будет работать с PHP-FPM.

make  
make install

Скопируйте php.ini и php-fpm.conf в правильные места:

cp /usr/local/src/php7-build/php-7.1.16/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

Откройте /opt/php-7.1/etc/php-fpm.conf и измените следующую настройку (уберите ; перед строкой pid):

nano /opt/php-7.1/etc/php-fpm.conf
[...]  
pid = run/php-fpm.pid  
[...]  

Затем откройте /opt/php-7.1/etc/php-fpm.d/www.conf и измените строку listen, вы должны использовать неиспользуемый порт (например, 8999; порт 9000 может быть уже занят стандартным PHP-FPM Debian):

nano /opt/php-7.1/etc/php-fpm.d/www.conf
[...]  
listen = 127.0.0.1:8999  
[...]  

Когда вы используете несколько дополнительных версий PHP, убедитесь, что вы используете свободный порт, например, 8998, 8997 и так далее для следующих версий.

3 Создание init-скрипта и файла юнита systemd

Debian поддерживает Systemd, а также традиционные init-скрипты. Большинство систем сегодня используют Systemd, в этом случае продолжайте с главы 3.2, для систем с традиционной системой инициализации следуйте главе 3.1, а затем переходите к главе 4. Не устанавливайте оба, скрипт systemd и init.d, на одной и той же системе.

3.1 Создание init.d стартового скрипта

Сначала я создам init-скрипт для службы php-fpm, а затем создам юнит systemd.

Сначала создайте init-скрипт для PHP-FPM:

nano /etc/init.d/php-7.1-fpm
#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-7.1-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-7.1-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-7.1/sbin/php-fpm
php_fpm_CONF=/opt/php-7.1/etc/php-fpm.conf
php_fpm_PID=/opt/php-7.1/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {
        try=0
        while test $try -lt 35 ; do
                case "$1" in
                        'created')
                        if [ -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                        'removed')
                        if [ ! -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                esac
                echo -n .
                try=`expr $try + 1`
                sleep 1
        done
}
case "$1" in
        start)
                echo -n "Starting php-fpm "
                $php_fpm_BIN $php_opts
                if [ "$?" != 0 ] ; then
                        echo " failed"
                        exit 1
                fi
                wait_for_pid created $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        stop)
                echo -n "Gracefully shutting down php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -QUIT `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed. Use force-exit"
                        exit 1
                else
                        echo " done"
                       echo " done"
                fi
        ;;
        force-quit)
                echo -n "Terminating php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -TERM `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        restart)
                $0 stop
                $0 start
        ;;
        reload)
                echo -n "Reload service php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -USR2 `cat $php_fpm_PID`
                echo " done"
        ;;
        *)
                echo "Usage: $0 {start|stop|force-quit|restart|reload}"
                exit 1
        ;;
esac

Сделайте init-скрипт исполняемым и создайте системные ссылки для запуска:

chmod 755 /etc/init.d/php-7.1-fpm  
insserv php-7.1-fpm

Наконец, запустите PHP-FPM:

/etc/init.d/php-7.1-fpm start

Результат должен быть:

/etc/init.d/php-7.1-fpm start  
Starting php-fpm done

3.2 Создание скрипта Systemd для PHP 7.1

Теперь создайте файл юнита systemd:

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

с следующим содержимым:

[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

Включите службу и перезагрузите systemd:

systemctl enable php-7.1-fpm.service  
systemctl daemon-reload

Наконец, запустите PHP-FPM:

systemctl start php-7.1-fpm.service

4 Включение Zend OPcache

Чтобы включить Zend OPcache, откройте /opt/php-7.1/lib/php.ini…

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

… и добавьте следующую строку в конце:

[...]  
zend_extension=opcache.so

Расширение Memcache и APCu еще не может быть установлено на PHP 7.1, поэтому я пропущу их установку на данный момент. Я обновлю учебник позже, когда расширения pecl будут совместимы с PHP 7.1.

Проверьте версию PHP:

cd /opt/php-7.1/bin  
./php --version

Вывод должен быть похож на этот скриншот.

Обратите внимание: Скриншот сделан с PHP 7.1.16, учебник постоянно обновляется для новых версий PHP 7.1, но мы не делаем новые скриншоты каждый раз, поэтому версия PHP 7.1, которую вы увидите на своем сервере, может быть новее. Текущая версия этого учебника предназначена для php-7.1.16.

5 Включение Memcache (по желанию)

В этой главе я скомпилирую и включу расширение PHP Memcached.

Первый шаг — установить пакет libmemcached-dev из Debian.

apt-get install libmemcached-dev

Затем создайте директорию, загрузите расширение PHP memcache с Github, распакуйте архив и войдите в директорию, содержащую распакованные файлы.

mkdir /usr/local/src/php7-build/php-memcache  
cd /usr/local/src/php7-build/php-memcache  
wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip  
unzip php7.zip  
cd php-memcached-php7

Подготовьте исходники, запустив команду phpize из PHP 7.1.

/opt/php-7.1/bin/phpize

Настройте и соберите расширение PHP memcache.

./configure --with-php-config=/opt/php-7.1/bin/php-config  
make  
make install

Чтобы включить расширение Memcache, откройте /opt/php-7.1/lib/php.ini…

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

… и добавьте следующую строку в конце:

[...]  
extension=memcached.so

2.1 Установка расширения xDebug (по желанию)

Модуль xDebug — это расширение для отладки PHP. Установка является необязательной.

Установите xDebug с помощью этих команд.

cd /opt/php-7.1/etc  
pecl -C ./pear.conf update-channels  
pecl -C ./pear.conf install xdebug

Затем отредактируйте файл php.ini с помощью редактора:

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

и добавьте следующую строку в конец файла:

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

Наконец, перезапустите демон php-fpm:

service php-7.1-fpm restart

7 Включение PHP 7.1 в ISPConfig

В ISPConfig 3 вы можете настроить новую версию PHP в разделе System > Additional PHP Versions. На вкладке Name просто заполните имя для версии PHP (например, PHP 7.1) — эта версия PHP будет отображаться под этим именем в настройках сайта в ISPConfig:

Введите имя пользовательской версии PHP

Перейдите на вкладку FastCGI Settings и заполните поля следующим образом:

Path to the PHP FastCGI binary: /opt/php-7.1/bin/php-cgi  
Path to the php.ini directory: /opt/php-7.1/lib

PHP 7.1 FastCGI

Затем перейдите на вкладку PHP-FPM Settings и заполните поля следующим образом:

Path to the PHP-FPM init script: /etc/init.d/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  

Настройки PHP 7.1 FPM

7 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.