Как понизить версию PHP?

На примере буду понижать версию PHP в Ubuntu 18.04, в которой по умолчанию устанавливается версия 7.2. Я не рекомендую понижать версию PHP, так как новые версии производительнее и закрывают уязвимости, но бывают случаи когда нужно запустить старый скрипт или движок, который не работает на новых версиях PHP, а исправить код очень трудоемко из-за того что много файлов.

Если PHP установлен в системе, то полностью удалим его:

sudo apt-get remove php-gd php-curl php-common libapache2-mod-php
sudo apt-get remove --purge php*

Обновим систему и установим необходимые компоненты чтобы в дальнейшем можно было вручную скомпилировать любую версию PHP:

sudo apt-get update
sudo apt-get install build-essential openssl libssl-dev bison autoconf automake libtool libmysqlclient-dev re2c libxslt1-dev libxml2-dev flex libssl-dev libsqlite0-dev libdb-dev libncurses5-dev libbz2-dev libldap2-dev libjpeg-dev libc-client2007e-dev libxpm-dev libfreetype6-dev libcurl4-openssl-dev libgmp3-dev libmcrypt-dev libmhash-dev libsnmp-dev freetds-dev libpcre3-dev zlib1g-dev libmysqlclient-dev git unixodbc-dev libpng-dev libaspell-dev libreadline-dev librecode-dev libtidy-dev apache2-dev libcurl4-gnutls-dev

Теперь скачем архив с нужной версией PHP с официального сайта https://www.php.net/releases/

sudo -i
wget https://www.php.net/distributions/php-5.6.40.tar.bz2
tar -xvf php-5.6.40.tar.bz2
cd php-5.6.40

Ну и собственно сконфигурируем, скомпилируем и установим:

./configure
make
make install

Конфигурировать также можно с дополнительными параметрами, например:

./configure --with-config-file-path=/etc/php5/apache2 --with-pear=/usr/share/php --with-bz2=/usr --with-mysqli --with-mysql --with-apxs2 --with-gd --enable-mbstring

Создадим файл конфигурации:

sudo cp php.ini-production /usr/local/lib/php.ini
sudo ln -s /usr/local/lib/php.ini /etc

После установки добавим в конфигурационный файл /etc/apache2/apache2.conf следующую строку:

AddType application/x-httpd-php .php

И подключим PHP к apache2 выполнив команду:

sudo a2enmod php5
sudo service apache2 restart

Проверим установленную версию:

php -v

К запущенным ресурсам работающим на старых версиях PHP я рекомендую открывать доступ только для нужных IP адресов, например как я описывал в статьях:
Контроль доступа Apache2
Как настроить доступ по IP в nginx

Смотрите также мою статью:
Как установить PHP 5.6 в Ubuntu 16

Оставьте комментарий

Добавить комментарий