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.bz2cd php-7.1.16/Установите необходимые пакеты для сборки PHP 7.1 и редактор nano, который я буду использовать для редактирования конфигурационных файлов:
apt-get install build-essential nano autoconfapt-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-devln -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.inicp /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 done3.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.service4 Включение 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.so2.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 restart7 Включение PHP 7.1 в ISPConfig
В ISPConfig 3 вы можете настроить новую версию PHP в разделе System > Additional PHP Versions. На вкладке Name просто заполните имя для версии PHP (например, PHP 7.1) — эта версия PHP будет отображаться под этим именем в настройках сайта в ISPConfig:

Перейдите на вкладку 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-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 
7 Ссылки
- PHP: http://www.php.net/
- ISPConfig: http://www.ispconfig.org/
- Debian: http://www.debian.org/
Get new posts in your inbox
No spam. Unsubscribe anytime.