Установка PHP Debian 8

Для различных версий Debian по умолчанию из репозитория устанавливаются различные версии РНР. Так при выполнении из консоли сервера с Debian 8 команды apt-get update && apt-get install php5 будет установлен пакет РНР версии 5.6, при выполнении той же команды на Debian 7 будет установлен пакет с версией 5.4.

 

Установка PHP Debian 8 (версии 5.6 и 5.4 )

Для того чтобы установить PHP. 5.6 на Debian 8 достаточно выполнить одну команду

Предварительно обновляем список подключенных репозиториев

apt-get update

 

Выполем установку пакета

apt-get install php5

 

После установки можно проверить версию выполнив команду php -v (выведется версия php-cli) или создать в корне любого сайта на сервере файл phpinfo.php, в который поместить код на PHP: <?php phpinfo(); ?>. При обращении к файлу через браузер будет выведена используемая версия РНР вместе с другими настройками.

 

 

Даунгрейд PHP на Debian 8 Jessie

В некоторых случая необходимо, чтобы на одном сервере работали сайты использующие разные версии РНР или версия РНР, которая для данной операционной системы не является используемой по умолчанию. Для примера рассмотрим сборку и установку РНР 5.4. РНР 5.6 при этом удалим.

 

Собирать пакет будем в другом каталоге, но исходники скачаем в /opt

cd /opt

 

Скачиваем исходники с официального сайта

wget http://museum.php.net/php5/php-5.4.9.tar.gz

Распаковываем архив и переходим в каталог одноименный версии РНР

tar -xzvf php-5.4.9.tar.gz

cd php-5.4.9/

 

Устанавливаем пакеты, которые потребуются для компиляции предварительно обновимв список репозиториев

apt-get update

apt-get install apache2-dev

 

apt-get install libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libmysqlclient-dev libpq-dev libicu-dev libfreetype6-dev libldap2-dev libxslt-dev

 

apt-get install build-essential

 

Создадим каталог под скомпилированный пакет

mkdir /usr/local/php

 

Теперь удаляем PHP 5.6

apt-get remove php5

 

dpkg -l | grep php5

 

apt-get remove php5-cgi php5-cli php5-common

 

apt-get remove php5-*

dpkg -l | grep php5

 

 

Последняя команда выведет все пакеты на сервере, имеющие в имени  php5, если apt-get remove php5-* не справился со своей задачей удаляем все пакеты из вывода dpkg -l | grep php5 вручную

apt-get remove php5-apcu php5-cgi php5-cli php5-common php5-curl php5-gd php5-imagick php5-json php5-mcrypt php5-mysql

 

apt-get purge php5-*

apt-get autoremove php5-*

dpkg -l | grep php5

 

Убеждаемся в том, что никаких пакетов не осталось

Теперь можно перейти в каталог с исходниками и приступить к сборке

cd /opt/php-5.4.9/

./configure —prefix=/usr/local/php/ —with-config-file-path=/usr/local/php/ —with-pdo-pgsql —with-zlib-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-zlib —enable-sockets —enable-sysvsem —enable-sysvshm —enable-pcntl —enable-mbregex —with-mhash —enable-zip —with-pcre-regex —with-mysql —with-pdo-mysql —with-mysqli —with-png-dir=/usr —enable-gd-native-ttf —with-fpm-user=nginx —with-libdir=lib64 —enable-ftp —with-kerberos —with-gettext —with-gd —with-jpeg-dir=/usr/lib/

 

Можно использовать при сборке дополнительные компоненты, часть из представленных удалить.

make && make install

 

При установка завершена успешно в выводе будет соответствующая надпись и путь к основным файлам, в т.ч. к бинарному файлу

 

Обратившись к нему из консоли можно увидеть установленную из исходником версию РНР

/usr/local/php/bin/php-cgi -v

 

Копируем из каталога с исходными кодами файл php.ini с настройками РНР

cp php.ini-production /usr/local/php/lib/php.ini

 

Проверяем версию

/usr/local/php/bin/php-cgi -v

PHP 5.4.9 (cgi-fcgi) (built: Jun 17 2017 15:58:19)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

 

 

Настройка совместной работы собранного РНР и Apache

Теперь необходимо дать понять веб-серверу, обрабатывающему пользовательские запросы, что необходимо использовать только что установленный в систему пакет

Смотрим используется на сервере модуль РНР, fcgid или php-fpm. В данном случае заранее известно, что у нас fcgid

apache2ctl -M | grep fcgid

fcgid_module (shared)

 

Просматриваем конфигурационный файл

less /etc/apache2/conf-enabledphp-fcgi.conf

<FilesMatch «\.ph(p[345]?|t|tml)$»>
SetHandler application/x-httpd-php

<FilesMatch «\.phps$»>
SetHandler application/x-httpd-php-source
Order Deny,Allow
Deny from all

<FilesMatch «^\.ph(p[345]?|t|tml|ps)$»>
Order Deny,Allow
Deny from all

ScriptAlias /cgi-wrapper /var/www/web/cgi-bin/
Action application/x-httpd-php «/cgi-wrapper/php»
SetHandler fcgid-script
Order allow,deny
Allow from all

 

Из его содержимого видно, что обработчик скриптов подключается за счет файла /var/www/web/cgi-bin/php

 

Просматриваем его и видим, что в файле указывается бинарник, за счет которого и обрабатываются скрипты

less /var/www/web/cgi-bin/php

#!/usr/local/php/bin/php-cgi

 

Заменяем его и видим при помощи echo на тот, что указывался в выводе make

echo «#!/usr/local/php/bin/php-cgi» > /var/www/web/cgi-bin/php

 

Обращаясь к phphinfo теперь можем видеть, что цель достигнута и на Debian 8  работает РНР 5.4
Установка php debian 8

 

Расширения PHP. которые не использовались при сборке можно собрать отдельно и подключить в php.ini

В php.ini также всегда имеет смысл включать логирование ошибок.