Мультиверсионность PHP на Virtualmin

Если у вас установлено несколько версий PHP, Virtualmin позволит вам выбрать, какую версию использовать для данного домена или даже для каждого каталога.

Хотя эта функция может работать с любым дистрибутивом Linux, она лучше всего работает с 64-битным CentOS (6 и выше), использующим репозиторий CentOS Software Collections, или с Debian 10, использующим PPA, или с Ubuntu 14.04, использующим PPA.

И пускай твердят что всякие ISPManager, cPanel, Plesk, Vesta, BrainyCP, FastPanel удобнее. Может для кого-то и удобнее, но по функционалу для виртуального хостинга они проигрывают.

Установка PHP 7.3 на CentOS 6 и 7

Заметки о CentOS
CentOS имеет специальный репозиторий под названием «Коллекции программного обеспечения» («Software Collections», также SCL), который представляет собой систему для установки нескольких версий программного обеспечения на одном сервере. Используя пакеты, предоставляемые в репозитории коллекций программного обеспечения, можно установить более поздние версии PHP /opt/, сохраняя при этом версию PHP по умолчанию, установленную в /usr/.

Репозиторий, предоставляющий эти пакеты, в настоящее время предоставляет только 64-битные пакеты. Если вы используете 32-битный CentOS, то, к сожалению, для этого нет PHP-пакетов.

У меня подцепилась из старых версий PHP 5.6, возможно что старые версии из репозитория уже того.

Установите репозиторий SCL:
yum -y install centos-release-scl
Установите пакеты PHP:
yum -y install rh-php73-php-{curl,cli,pdo,fpm,zip,gd,xml,mysqlnd,opcache}
Далее переходите к конфигурации.

Установка PHP 7.4 и 8.0 на CentOS 7

Установите репозиторий Remi и очистите кэш:
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm && yum clean all
Установите PHP — пакеты версии 7.4 и (или) 8.0:
yum -y install php74-php-{curl,cli,pdo,fpm,zip,gd,xml,mysqlnd,opcache}
yum -y install php80-php-{curl,cli,pdo,fpm,zip,gd,xml,mysqlnd,opcache}
Далее переходите к конфигурации.

Установка PHP 7.3, 7.4, 8.0 на CentOS 8

Установите репозиторий Remi и очистите кэш:
dnf -y install http://rpms.remirepo.net/enterprise/remi-release-8.rpm && dnf clean all
Установите PHP — пакеты версии 7.3 и (или) 8.0:
dnf -y install php73-php-{curl,cli,pdo,fpm,zip,gd,xml,mysqlnd,opcache}
dnf -y install php74-php-{curl,cli,pdo,fpm,zip,gd,xml,mysqlnd,opcache}
dnf -y install php80-php-{curl,cli,pdo,fpm,zip,gd,xml,mysqlnd,opcache}
Далее переходите к конфигурации.

Установка PHP 5.6, 7.4, 8.0 на Debian 9/10

Включите репозиторий deb.sury.org:
apt-get -y install apt-transport-https lsb-release ca-certificates curl
curl -sSL -o /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Сделайте обновление всех репозиториев:
apt update
Установите PHP пакеты версии 5.6, 7.4, 8.0:
apt-get install php5.6-{curl,cli,pdo,fpm,zip,gd,xml,mysql,cgi}
apt-get install php7.4-{curl,cli,pdo,fpm,zip,gd,xml,mysql,cgi}
apt-get install php8.0-{curl,cli,pdo,fpm,zip,gd,xml,mysql,cgi}
Далее переходите к конфигурации.

Установка PHP версии 5.6, 7.3, 8.0 на Ubuntu 16.04, 18.04 и 20.04

Установите PPA:
add-apt-repository ppa:ondrej/php && apt-get update
Установите пакеты PHP:
apt-get install php5.6-{curl,cli,pdo,fpm,zip,gd,xml,mysql,cgi}
apt-get install php7.3-{curl,cli,pdo,fpm,zip,gd,xml,mysql,cgi}
apt-get install php8.0-{curl,cli,pdo,fpm,zip,gd,xml,mysql,cgi}
Далее переходите к конфигурации.

Настройка второй версии PHP в Virtualmin

После завершения установки второй версии PHP на вашем сервере вы можете убедиться, что Virtualmin видит ее, войдя в Virtualmin и нажав System Settings -> Re-Check Config. Вы должны увидеть что-то вроде этого:
The following PHP versions are available : 5.6.25 (/opt/rh/rh-php56/root/usr/bin/php-cgi), 7.0.10 (/opt/rh/rh-php70/root/usr/bin/php-cgi)

PHP versions have changed to 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0 since last check. Regenerating any missing php.ini files.
Вы можете настроить, какая из них является версией PHP по умолчанию, используемой на новых виртуальных серверах. По умолчанию используется самая новая доступная версия. Вы можете изменить это значение по умолчанию в разделе Системные настройки (System Settings) -> Шаблоны сервера (Server Templates) -> По умолчанию (Default) -> Параметры PHP (PHP Settings), и на этом экране вы можете установить версию PHP по умолчанию для использования в поле Версия PHP по умолчанию (Default PHP version).

Делаем Python из PHP

Вы когда-нибудь пытались перевести сайт на Python, но за неимением навыков у Вас не получалось? Тогда мой рассказ про инструмент преобразования PHP-файлов для Вас и я думаю, что он пригодится любому мало-мальски знающему программисту.
php2py — это php-скрипт для преобразования php в python. В качестве входных данных этот скрипт принимает XML-файл, созданный компилятором PHP под названием phc вместо php-кода. Для вебмастеров такое решение незаменимо, так как помогает создавать Python-файлы из уже готовых PHP и можно таким образом перегнать весь сайт.
Пример выполнения команд — это:
$ phc --dump-xml=ast somecode.php > out.xml
$ ./php2py.php out.xml > somecode.py
Вообще, инструмент доступен на Гитхабе свободно. Его придумал программер под ником taichino. Единственная трудность в том, что компилятор phc потерял домен, поэтому в свободном доступе его найти не так просто. Ну, для тех, кто использует поиск, может и просто.
Теперь затронем тему самого phc.
phc — это компилятор с открытым исходным кодом для PHP с поддержкой плагинов. Кроме того, его можно использовать для точной печати или обфускации PHP-кода в качестве платформы для разработки приложений, обрабатывающих скрипты PHP, или для преобразования PHP в XML и обратно, что позволяет обрабатывать PHP-скрипты с использованием инструментов XML.
Примечание: phc на некоторых платформах не поддерживается. Он компилирует некоторые программы и имеет расширенную инфраструктуру оптимизации. Однако он не предназначены для использования в производстве (особенно если нет поддержки объектов!). Он имеет отличную структуру преобразования программ, хотя, к сожалению, последний раз обновлялся для PHP 5.2 и не поддерживает более новые функции.
Печально но факт — такие разработки как phc чаще всего проходят мимо официальной аудитории.
Установка компилятора весьма проста и потребует только базовых инструментов разработчика. Может еще запросить Boost, но он лежит также в свободном доступе и найти его не составит труда.
Итак, ставим.
$ git clone https://github.com/pbiggar/phc.git
$ cd phc
$ touch src/generated/* Makefile.in configure Makefile libltdl/aclocal.m4 libltdl/Makefile.in libltdl/configure libltdl/Makefile
$ ./configure
$ make
$ make install
Для Debian-like систем может потребоваться установка дополнительных библиотек.