PHP установка · 6 min read · Nov 03, 2025
Как установить PHP 7 как PHP-FPM и FastCGI для ISPConfig 3 на Debian 8 (Jessie)
Финальная версия PHP 7 доступна для загрузки на Github и зеркалах PHP. PHP7 — это следующее поколение языка программирования 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 как версию PHP-FPM и FastCGI на сервере Debian Jessie. Эти сборки PHP 7 включают Zend OPcache.
1 Предварительная заметка
Я установлю PHP 7, который в настоящее время находится в бета-версии на момент написания. Пожалуйста, обратите внимание, что PHP-FPM может использоваться как на серверах Apache, так и на Nginx, в то время как FastCGI доступен только для серверов Apache.
С более старыми версиями PHP PHP-FPM и FastCGI были взаимно исключающими, так что бинарные файлы FPM и FastCGI должны были собираться отдельно. С PHP 7 можно собрать один бинарный файл, который поддерживает режимы FPM и FCGI.
2 Компиляция PHP 7 с PHP-FPM и Fastcgi
Скачайте и извлеките PHP 7 с Github:
mkdir -p /opt/php-7.0.32
mkdir /usr/local/src/php7-build
cd /usr/local/src/php7-build
wget http://de2.php.net/get/php-7.0.32.tar.bz2/from/this/mirror -O php-7.0.32.tar.bz2
tar jxf php-7.0.32.tar.bz2cd php-7.0.32/Установите предварительные условия для сборки PHP 7 и редактор nano, который я буду использовать для редактирования конфигурационных файлов:
apt-get install build-essential nanoapt-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.32#)
Настройте и соберите PHP 7.0.0 следующим образом (вы можете настроить команду ./configure в соответствии с вашими потребностями, посмотрите на
./configure --helpчтобы увидеть все доступные параметры; если вы используете другую команду ./configure, возможно, потребуются дополнительные библиотеки, или процесс сборки завершится неудачей):
./configure --prefix=/opt/php-7.0.32 --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.0.32/php.ini-production /opt/php-7.0.32/lib/php.inicp /opt/php-7.0.32/etc/php-fpm.conf.default /opt/php-7.0.32/etc/php-fpm.conf
cp /opt/php-7.0.32/etc/php-fpm.d/www.conf.default /opt/php-7.0.32/etc/php-fpm.d/www.confОткройте /opt/php-7.0.32/etc/php-fpm.conf и измените следующую настройку (уберите ; перед строкой pid):
nano /opt/php-7.0.32/etc/php-fpm.conf[...]
pid = run/php-fpm.pid
[...] Затем откройте /opt/php-7.0.32/etc/php-fpm.d/www.conf и измените строку listen, вы должны использовать неиспользуемый порт (например, 8999; порт 9000 может быть уже занят стандартным PHP-FPM Debian):
nano /opt/php-7.0.32/etc/php-fpm.d/www.conf[...]
listen = 127.0.0.1:8999
[...] 3 Создание скрипта и файла юнита systemd
Debian поддерживает Systemd, а также традиционные скрипты инициализации. Сначала я создам скрипт инициализации для службы php-fpm, а затем создам юнит systemd.
Сначала создайте скрипт инициализации для PHP-FPM:
nano /etc/init.d/php-7.0.32-fpm#! /bin/sh
### BEGIN INIT INFO
# Provides: php-7.0.32-fpm
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts php-7.0.32-fpm
# Description: starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-7.0.32/sbin/php-fpm
php_fpm_CONF=/opt/php-7.0.32/etc/php-fpm.conf
php_fpm_PID=/opt/php-7.0.32/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Сделайте скрипт инициализации исполняемым и создайте ссылки для запуска системы:
chmod 755 /etc/init.d/php-7.0.32-fpm
insserv php-7.0.32-fpmА теперь создайте файл юнита systemd
nano /lib/systemd/system/php-7.0.32-fpm.serviceс следующим содержимым:
[Unit]
Description=The PHP 7 FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/opt/php-7.0.32/var/run/php-fpm.pid
ExecStart=/opt/php-7.0.32/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.0.32/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.targetВключите службу и перезагрузите systemd:
systemctl enable php-7.0.32-fpm.service
systemctl daemon-reloadНаконец, запустите PHP-FPM.
Для систем с традиционной системой инициализации выполните:
/etc/init.d/php-7.0.32-fpm startРезультат должен быть:
/etc/init.d/php-7.0.32-fpm start
Starting php-fpm doneНа серверах, которые используют systemd, используйте эту команду вместо этого:
systemctl start php-7.0.32-fpm.serviceЧтобы включить Zend OPcache, откройте /opt/php-7.0.32/lib/php.ini…
nano /opt/php-7.0.32/lib/php.ini… и добавьте следующую строку в конце:
[...]
zend_extension=opcache.soРасширения Memcache и APCu пока не могут быть установлены на PHP 7, поэтому я пропущу их установку на данный момент. Я обновлю учебник позже, когда расширения pecl будут совместимы с PHP 7.
Проверьте версию PHP:
cd /opt/php-7.0.32/bin
./php --versionВывод должен быть похож на этот скриншот.
Пожалуйста, обратите внимание: Скриншот сделан с PHP 7.0.0, учебник обновляется постоянно для новых версий PHP 7, но мы не делаем новые скриншоты каждый раз, поэтому версия PHP 7, которую вы увидите на своем сервере, вероятно, новее. Текущая версия этого учебника для php-7.0.32.
4 Включение PHP 7 в ISPConfig
В ISPConfig 3 вы можете настроить новую версию PHP в разделе Система > Дополнительные версии PHP. На вкладке Имя просто заполните имя для версии PHP (например, PHP 7.0.0) — эта версия PHP будет отображаться под этим именем в настройках сайта в ISPConfig:

Перейдите на вкладку Настройки FastCGI и заполните поля следующим образом:
Путь к бинарному файлу PHP FastCGI: /opt/php-7.0.32/bin/php-cgi
Путь к директории php.ini: /opt/php-7.0.32/lib
Затем перейдите на вкладку Настройки PHP-FPM и заполните поля следующим образом:
Путь к скрипту инициализации PHP-FPM: php-7.0.32-fpm
Путь к директории php.ini: /opt/php-7.0.32/lib
Путь к директории пула PHP-FPM: /opt/php-7.0.32/etc/php-fpm.d 
5 Ссылки
- 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.