Как просто и быстро узнать версию PHP?
PHP — это один из языков программирования, и он используется для создания динамических страниц. Большинство скриптов требует определенной версии PHP, причем далеко не всегда — самой последней. Очевидно, что для стабильной работы вашего сайта выбранный вами хостинг должен поддерживать PHP той версии, которая необходима для корректного выполнения нужных вам скриптов.
Как узнать версию PHP на хостинге? Сделать это можно различными способами, и наиболее простые и удобные из них мы рассмотрим ниже.
Кстати, а кто у вас хостинг-провайдер? Он входит в рейтинг хостингов 2022? Рекомендуем обязательно свериться.
Как узнать версию PHP сайта: способ первый
Чтобы узнать версию PHP на вашем сервере выполните такую последовательность действий:
- откройте любой текстовый редактор;
- создайте новый файл и впишите в него строку: php echo phpversion();
- сохраните ваш файл с расширением .php;
- загрузите его на сайт;
- введите в адресную строку вашего браузера следующее: site_name/phpversion.php, где site_name — доменное имя вашего сайта, а phpversion.php — имя сохраненного файла.
После этого на вашем экране должно возникнуть число, которое будет означать версию PHP, установленную на данный момент. Если же вместо числа вы видите исходный код — это значит, что PHP на вашем сайте не поддерживается. Подобное явление на современном хостинге — редкость, но вам стоит иметь в виду, что и такой результат тоже возможен.
Существует другой вариант этого способа, как узнать версию PHP на сервере: вместо строки php echo phpversion() можно записать , остальные действия — те же. В этом случае на ваш экран при обращении к данному файлу будет выведена не только версия, но и все существующие параметры PHP-версии, установленной на вашем сайте.
Второй способ. Как узнать версию PHP: Centos, Debian, Windows
К сожалению, не всегда есть возможность создать файл и загрузить его на сервер. В таких случаях можно использовать командную строку или консоль, и этот способ также довольно прост и не менее эффективен.
Как посмотреть версию PHP (Linux, Windows):
- Запустить командную строку (для Windows) или консоль (для Unix-систем).
- Осуществить SSH-подключение к серверу.
- Выполнить запрос вида: php -v.
Ответ на этот запрос позволит вам узнать версию PHP для Debian, Centos и других Unix-систем и Windows.
Кстати говоря, у нас теперь имеются выделенные сервера на Windows и мы можем установить Вам любую версию PHP.
Конечно же, если вас интересует быстрый способ, как проверить, какая версия PHP стоит на серверах интересующего вас хостера, то можно поступить очевидным образом: посмотреть на сайте хостинг-провайдера. Может оказаться так, что в свободном доступе такой информации нет — в этом случае есть смысл обратиться в техподдержку и получить ответы на все свои вопросы.
И если вы ищете надежный хостинг с современным программным обеспечением, то вам наверняка понравится RigWEB. Мы предлагаем вам:
- Широкий выбор тарифных планов и вариантов хостинга
Мы ценим каждого клиента, поэтому готовы предложить подходящий тариф как для создания первого проекта начинающего веб-мастера, так и для размещения десятков или сотен веб-ресурсов опытных разработчиков. При этом мы заботимся о неизменно выгодном для наших пользователей соотношении качества хостинга и его стоимости. Также радуем своих клиентов регулярными акциями и скидками, которые позволят вам заказать наши услуги по еще более выгодной цене.
Мы гарантируем доступность серверов круглые сутки и заранее уведомляем о проведении плановых технических работ. Наше серверное оборудование размещено в современном дата-центре и находится под постоянным наблюдением квалифицированных специалистов, поэтому вы можете быть уверены в стабильности арендованного хостинга.
- Оперативная и вежливая круглосуточная техподдержка
Любой ваш запрос относительно работы с сайтом или хостингом будет обработан в течение 30 минут специалистом нашей техподдержки в любое время суток. Так что если вы не знаете, как узнать версию PHP на Centos при работе с арендованным сервером — наша техподдержка вам поможет!
Пользуйтесь профессиональным хостингом от RigWEB и создавайте интересные, технологичные и привлекательные для пользователей веб-проекты, ведь мы предоставим вам для этого максимально комфортные условия по адекватной цене!
Как установить PHP 7.4 / 7.3 на CentOS 8 / RHEL 8
PHP — это язык программирования с открытым исходным кодом, широко используемый для веб-разработки, созданный Расмусом Лердорфом. Это язык сценариев со встроенным HTML для создания динамических веб-сайтов.
В этом посте мы увидим, как установить PHP 7.4 / 7.3 на CentOS 8 / RHEL 8. Добавить репозиторий Remi
Remi, сторонний репозиторий, который предлагает несколько версий PHP (7.4 / 7.3 / 7.2) для Red Hat Enterprise Linux.
Remi хранилище требует EPEL хранилище быть включена в системе.
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Чтобы включить репозиторий Remi в вашей системе, установите пакет автоматической настройки репозитория Remi, используя следующую команду.
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
CentOS-8 - AppStream 1.7 MB/s | 6.3 MB 00:03 CentOS-8 - Base 3.0 MB/s | 7.9 MB 00:02 CentOS-8 - Extras 5.5 kB/s | 2.1 kB 00:00 CentOS-8 - PowerTools 916 kB/s | 1.8 MB 00:02 Extra Packages for Enterprise Linux 8 - x86_64 1.9 MB/s | 5.2 MB 00:02 Google Cloud SDK 6.6 MB/s | 29 MB 00:04 Google Compute Engine 1.7 kB/s | 5.8 kB 00:03 remi-release-8.rpm 13 kB/s | 20 kB 00:01 Dependencies resolved. =================================================================================================================== Package Arch Version Repository Size =================================================================================================================== Installing: remi-release noarch 8.0-4.el8.remi @commandline 20 k Transaction Summary =================================================================================================================== Install 1 Package Total size: 20 k Installed size: 14 k Downloading Packages: Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : remi-release-8.0-4.el8.remi.noarch 1/1 Verifying : remi-release-8.0-4.el8.remi.noarch 1/1 Installed: remi-release-8.0-4.el8.remi.noarch Complete!
Перечислите доступный поток модуля PHP.
dnf module list php
Вы должны увидеть результат ниже.
CentOS-8 - AppStream Name Stream Profiles Summary php 7.2 [d] common [d], devel, minimal PHP scripting language Remi's Modular repository for Enterprise Linux 8 - x86_64 Name Stream Profiles Summary php remi-7.2 common [d], devel, minimal PHP scripting language php remi-7.3 common [d], devel, minimal PHP scripting language php remi-7.4 common [d], devel, minimal PHP scripting language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Установите PHP 7.4 на CentOS 8 / RHEL 8
Включите модуль php: remi-7.4 для установки PHP 7.4.
dnf module enable php:remi-7.4 -y
Last metadata expiration check: 0:03:03 ago on Sat 11 Jan 2020 02:41:27 PM UTC. Dependencies resolved. =================================================================================================================== Package Arch Version Repository Size =================================================================================================================== Enabling module streams: httpd 2.4 php remi-7.4 Transaction Summary =================================================================================================================== Complete! Switching module streams does not alter installed packages (see 'module enable' in dnf(8) for details)
Установите PHP 7.4 на CentOS 8 / RHEL 8 с помощью команды dnf.
dnf install -y php php-cli php-common
Установите PHP 7.3 на CentOS 8 / RHEL 8
Включите модуль php: remi-7.3 для установки PHP 7.3.
dnf module enable php:remi-7.3 -y
Last metadata expiration check: 0:03:03 ago on Sat 11 Jan 2020 02:41:27 PM UTC. Dependencies resolved. =================================================================================================================== Package Arch Version Repository Size =================================================================================================================== Enabling module streams: httpd 2.4 nginx 1.14 php remi-7.3 Transaction Summary =================================================================================================================== Complete! Switching module streams does not alter installed packages (see 'module enable' in dnf(8) for details)
Установите PHP 7.3 на CentOS 8 / RHEL 8 с помощью команды dnf .
dnf install -y php php-cli php-common
Проверить версию PHP
После установки PHP проверьте версию PHP с помощью следующей команды.
php -v
PHP 7.4.1 (cli) (built: Dec 17 2019 16:35:58) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.1, Copyright (c), by Zend Technologies
Если вы настраиваете стек LEMP на RHEL 8, вы можете установить php-fpm.
dnf install -y php-fpm
Установить расширения PHP
Расширения PHP — это скомпилированные библиотеки, которые обеспечивают конкретную поддержку вашего кода.
Чтобы иметь поддержку MySQL в вашем коде, вы можете установить пакет php-mysqlnd .
dnf install -y php-mysqlnd
После того, как вы установили расширение MySQL, вы можете использовать следующую команду, чтобы проверить его..
php -m | grep -i mysql
mysqli mysqlnd pdo_mysql
Расширения PHP для WordPress
Следующие расширения необходимы для установки и запуска WordPress на вашем компьютере RHEL 8. WordPress рекомендует для установки PHP v7.3.
dnf install -y php-dom php-simplexml php-ssh2 php-xml php-xmlreader php-curl php-date php-exif php-filter php-ftp php-gd php-hash php-iconv php-json php-libxml php-pecl-imagick php-mbstring php-mysqlnd php-openssl php-pcre php-posix php-sockets php-spl php-tokenizer php-zlib
Расширения PHP для Joomla
Следующие расширения необходимы для установки и запуска Joomla на вашем компьютере RHEL 8. Joomla требует PHP v7.1 и выше.
dnf install -y php-mysqlnd php-zlib php-xml php-pear php-json php-mcrypt php-pecl-imagick
Расширения PHP для Drupal
Следующие расширения необходимы для установки и запуска Joomla на вашем компьютере RHEL 8. Drupal требует PHP v7.1 и выше.
dnf install -y php-mysqlnd php-date php-dom php-filter php-gd php-hash php-json php-pcre php-pdo php-session php-simplexml php-spl php-tokenizer php-xml
Вывод
Надеюсь, вы узнали, как установить PHP 7.4 / 7.3 на CentOS 8 / RHEL 8.
PHP selector или как изменить версию PHP для сайта на Вашем сервере?
Для многих пользователей иногда очень важно, какая версия PHP установлена на сервере хостинг провайдера, так как для сайтов многих из них подходит только определённая версия PHP и данный сайт может работать только на этой одной версии.
Очень часто пользователи сначала покупают хостинг и переносят данные сайта
(файлы и базы данных) на сервера хостинг провайдера и только потом начинают выяснять, какая именно версия PHP больше всего подходит для сайта.
В результате несовместимости версий, пользователи вынуждены просить техническую поддержку хостинг компании перенести сайт на другой сервер с поддержкой иной версии PHP, что влияет на работоспособность сайта и занимает время (иногда много времени, если файлы Вашего сайта занимают несколько гигабайт например).
Совсем недавно c помощью уникальной операционной системы Cloud Linux был найден выход из данной ситуации и решен вопрос с версиями PHP для сайтов. Данным уникальным решением стал модуль Cpanel PHP Selector. Если вы владелец VPS или выделенного сервера, теперь просто достаточно установить на сервер LVE Manager с помощью вашей панели управления WHM, а после этого установить PHP selector с нужными версиями PHP и модулями.
yum install lvemanager
yum groupinstall alt-php
После установки LVE Manager появится в вашей панели WHM:
Стоит отметить тот факт, что PHP Selector, который входит в состав LVE Manager является платным ( цены на лицензии можно посмотреть по ссылке http://www.cloudlinux.com/about/pricing.php).
После покупки лицензии и завершении установки модуля, Ваш хостинг может поддерживать более двух установленных версий PHP одновременно. Вы самостоятельно можете выбирать версию для вашего сайта ( это касается также пользователей Shared Хостинга), а также активировать нужные модули или акселераторы.
Нескольких версий PHP на сервере Linux

Несколько версий PHP на сервере Linux удобно в работе и последующем обслуживании. В статье пример на базе Rocky Linux , но вы можете использовать его и для других систем использующих репозиторий RHEL.
Введение
Для любого системного администратора обновление версий PHP является задачей не простой и очень ответственной. При использовании на сервере одной версии php в процессе перехода на новую версию приходиться делать много действий необходимых для безотказной работы ресурса на период обновления. Сюрпризы могут подстерегать на любом моменте и спрогнозировать их крайне сложно.
В этой статье я описал механизм того как можно совершенно спокойно обновлять версии PHP не создавая проблем в работе пользователей с рабочим ресурсом.
Предварительная подготовка
Для работы с разными версиями php на одном сервере нам необходимо произвести предварительную настройку системы.
Установка и настройка сервера
При написании статьи учитывается что настройка сервера была произведена согласно статьи Rocky Linux 8 установка и настройка.
Команды которые дают доступ к серверу по 80 и 443 порту в случае использования FirewallD:
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --reload
Из статьи FirewallD базовая настройка вы можете узнать более подробно как работать с этим сервисом.
Перед началом использования репозитория Remi (на базе которого мы и будем устанавливать разные версии PHP) необходимо подключить репозиторий Epel созданный группой специалистов операционной системы Fedora. Пакеты из Epel репозитория никогда не конфликтуют и не переустанавливают базовые пакеты RHEL.
Установка Epel для дистрибутивов на базе RHEL производится командой:
dnf install epel-release dnf update
Установка и настройка Nginx
При написании статьи учитывается что настройка Nginx была произведена согласно статьи NGINX установка и настройка.
Установка базовой версии PHP
Про актуальность разных версий PHP можно узнать на сайте Supported Versions PHP.

Посмотрим какие варианты присутствуют в базовой версии:
# dnf module list php Последняя проверка окончания срока действия метаданных: 1:27:39 назад, Ср 10 ноя 2021 11:34:45. Rocky Linux 8 - AppStream Name Stream Profiles Summary php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language php 7.4 common [d], devel, minimal PHP scripting language Подсказка: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Видим что в базовой версии по умолчанию находится версия 7.2 её и будем устанавливать.
Установим php и наиболее популярные модули, которые могут пригодится в процессе эксплуатации веб сервера.
dnf install php php-fpm php-cli php-mysqlnd php-gd php-ldap php-odbc php-pdo php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip php-opcache
Проверим установленную версию выполнив команду в консоли сервера:
php -v = вывод команды = PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.24, Copyright (c) 1999-2018, by Zend Technologies
Для того чтобы связать nginx и php будем использовать мост php-fpm. Основной файл настройки находится по пути /etc/php-fpm.conf и там должен быть параметр include=/etc/php-fpm.d/*.conf говорящий о том где лежат настройки пулов.
Запускаем php-fpm и добавляем в автозагрузку:
systemctl enable --now php-fpm
Проверяем, запустился ли он.
systemctl status php-fpm = вывод команды = ● php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2021-11-10 13:51:24 EST; 16s ago Main PID: 7567 (php-fpm) Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 6 (limit: 23681) Memory: 17.3M CGroup: /system.slice/php-fpm.service ├─7567 php-fpm: master process (/etc/php-fpm.conf) ├─7568 php-fpm: pool www ├─7569 php-fpm: pool www ├─7570 php-fpm: pool www ├─7571 php-fpm: pool www └─7572 php-fpm: pool www ноя 10 13:51:24 localhost.localdomain systemd[1]: Starting The PHP FastCGI Process Manager. ноя 10 13:51:24 localhost.localdomain systemd[1]: Started The PHP FastCGI Process Manager.
Из вывода видно сервис успешно работает.
Настройки php находятся по стандартному пути /etc/php.ini а настройки пулов лежат в папке /etc/php-fpm.d/.
Использовать порт или сокет решать вам, но говорят что сокет использовать лучше. Запустим php-fpm через unix сокет. Для этого переименуем конфиг /etc/php-fpm.d/www.conf, создадим новый и приводим к следующему виду:
mv /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf_orig vim /etc/php-fpm.d/www.conf = необходимый код = [www] user = nginx group = nginx ;listen = 127.0.0.1:9000 listen = /run/php-fpm/www.sock listen.mode = 0660 listen.owner = nginx listen.group = nginx listen.allowed_clients = 127.0.0.1 pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 ;pm.process_idle_timeout = 10s; ;pm.max_requests = 500 slowlog = /var/log/php-fpm/www-slow.log ;php_flag[display_errors] = off php_admin_value[error_log] = /var/log/php-fpm/www-error.log php_admin_flag[log_errors] = on ;php_admin_value[memory_limit] = 128M php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache php_value[opcache.file_cache] = /var/lib/php/opcache
Вы можете для каждого сайта создать свой пул и указать там все необходимые параметры. Например, для каждого сайта я создаю свой пул для гибкости настройки и благодаря этому я настраиваю корректный доступ к файлам по sftp. Более подробно про настройку доступа по SFTP прочтите в статье SFTP настройка для веб хостинга.
Назначим каталогу /var/lib/php правильное владение:
=== было === ls -l /var/lib/php = вывод команды = итого 0 drwxrwx--- 2 root apache 6 окт 22 12:08 opcache drwxr-xr-x 2 root root 59 окт 28 10:05 peclxml drwxrwx--- 2 root apache 6 окт 22 12:08 session drwxrwx--- 2 root apache 6 окт 22 12:08 wsdlcache === Назначаем правильные права === chown -R root:nginx /var/lib/php
Перезапускаем php-fpm командой:
systemctl restart php-fpm
Проверяем, стартовал ли указанный сокет.
ll /run/php-fpm/www.sock srw-rw---- 1 nginx nginx 0 фев 13 10:35 /run/php-fpm/www.sock
Всё успешно настроено.
В настройках nginx для сайта необходимо указать требуемый пул.
Например, прописать код fastcgi_pass unix:/run/php-fpm/www.sock; в секции location ~ \.php$
Настройка базовой версии закончена и приступаем к установке других версий php.
Версии PHP от Remi
Есть замечательный человек Remi Collet, который создал репозиторий пользующийся огромной популярностью у пользователей операционных систем на базе RHEL. Познакомится с новостями репозитория можно на блоге Remi Collet.
Подключаем репозиторий Remi, выполнив следующую команду:
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Посмотрим список всех доступных вариантов установки php:
dnf module list php = вывод команды = Safe Remi's RPM repository for Enterprise Linux 8 - x86_64 1.6 MB/s | 2.0 MB 00:01 Rocky Linux 8 - AppStream Name Stream Profiles Summary php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language php 7.4 common [d], devel, minimal PHP scripting language Remi's Modular repository for Enterprise Linux 8 - x86_64 Name Stream Profiles Summary php remi-7.2 common [d], devel, minimal PHP scripting language php remi-7.3 common [d], devel, minimal PHP scripting language php remi-7.4 common [d], devel, minimal PHP scripting language php remi-8.0 common [d], devel, minimal PHP scripting language php remi-8.1 common [d], devel, minimal PHP scripting language Подсказка: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Из вывода выше видно что появилась возможность установить версии от 7.2 до 8.1 из реппозитрия Remi.
В выводе нет информации о возможности установить PHP версии 5.6, но сделать это можно по аналогии как мы будем устанавливать версии ниже. Достаточно указать код #dnf install php56 php56-php-fpm
Для чистоты эксперимента и наглядности установим две версии 7.4 и 8.1
В результате мы получим на сервере 3 разных версии php.
Установка версий PHP от Remi
Активируем репу php remi-7.4, для этого выполняем команды:
dnf module reset php dnf module enable php:remi-7.4
При желании можно убедится что версия выбрана правильно выполнив команду:
dnf module list php
Установим php remi-7.4 и все популярные модули следующей командой:
dnf install php74 php74-php-fpm php74-php-cli php74-php-mysqlnd php74-php-gd php74-php-ldap php74-php-odbc php74-php-pdo php74-php-pear php74-php-xml php74-php-xmlrpc php74-php-mbstring php74-php-snmp php74-php-soap php74-php-zip php74-php-opcache
Обращаю особое внимание на указание именно php74 перед требуемыми пакетами. Только при таком названии пакетов установятся необходимые и не возникнет путаницы.
Сразу установим версию php 8.1 из репозитория Remi и выключим активную версию:
dnf module reset php dnf module enable php:remi-8.1 dnf install php81 php81-php-fpm php81-php-cli php81-php-mysqlnd php81-php-gd php81-php-ldap php81-php-odbc php81-php-pdo php81-php-pear php81-php-xml php81-php-xmlrpc php81-php-mbstring php81-php-snmp php81-php-soap php81-php-zip php81-php-opcache dnf module reset php
После установки обеих версий PHP запустим оба сервиса и включим его в автозагрузку с помощью следующих команд:
systemctl enable --now php74-php-fpm systemctl enable --now php81-php-fpm
Проверим статус выполнив команду:
# systemctl status php74-php-fpm ● php74-php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php74-php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2021-11-10 15:00:54 EST; 24s ago Main PID: 8787 (php-fpm) Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 6 (limit: 23681) Memory: 16.2M CGroup: /system.slice/php74-php-fpm.service ├─8787 php-fpm: master process (/etc/opt/remi/php74/php-fpm.conf) ├─8788 php-fpm: pool www ├─8789 php-fpm: pool www ├─8790 php-fpm: pool www ├─8791 php-fpm: pool www └─8792 php-fpm: pool www ноя 10 15:00:54 localhost.localdomain systemd[1]: Starting The PHP FastCGI Process Manager. ноя 10 15:00:54 localhost.localdomain systemd[1]: Started The PHP FastCGI Process Manager.
Показан вывод версии php74 для версии php81 будет аналогичный.
Покажу дальнейшую настройку только для версии php74, так как настройка для php81 будет аналогичной.
Настройки php74 находятся по пути /etc/opt/remi/php74/php.ini а настройки пулов лежат в папке /etc/opt/remi/php74/php-fpm.d/.
Запустим php74-php-fpm через unix сокет. Для этого скопируем конфиг /etc/opt/remi/php74/php-fpm.d/www.conf и приведем оригинал к следующему виду:
cp /etc/opt/remi/php74/php-fpm.d/www.conf /etc/opt/remi/php74/php-fpm.d/www.conf-orig vim /etc/opt/remi/php74/php-fpm.d/www.conf = необходимый код = [www] user = nginx group = nginx listen = /var/opt/remi/php74/run/php-fpm/www.sock ;listen.owner = nobody ;listen.group = nobody ;listen.mode = 0660 listen.acl_users = nginx listen.acl_groups = nginx listen.allowed_clients = 127.0.0.1 pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 slowlog = /var/opt/remi/php74/log/php-fpm/www-slow.log php_admin_value[error_log] = /var/opt/remi/php74/log/php-fpm/www-error.log php_admin_flag[log_errors] = on ;php_admin_value[memory_limit] = 128M php_value[session.save_handler] = files php_value[session.save_path] = /var/opt/remi/php74/lib/php/session php_value[soap.wsdl_cache_dir] = /var/opt/remi/php74/lib/php/wsdlcache ;php_value[opcache.file_cache] = /var/opt/remi/php74/lib/php/opcache
Назначим каталогу /var/opt/remi/php74/lib/php правильное владение:
=== было === ls -l /var/opt/remi/php74/lib/php = вывод команды = итого 0 drwxrwx--- 2 root apache 6 окт 20 02:01 opcache drwxr-xr-x 2 root root 36 ноя 10 14:49 peclxml drwxrwx--- 2 root apache 6 окт 20 02:01 session drwxrwx--- 2 root apache 6 окт 20 02:01 wsdlcache === Назначаем правильные права === chown -R root:nginx /var/opt/remi/php74/lib/php
Перезапускаем php-fpm командой:
systemctl restart php74-php-fpm
Проверяем, стартовал ли указанный сокет.
ll /var/opt/remi/php74/run/php-fpm/www.sock srw-rw----+ 1 root root 0 ноя 10 15:46 /var/opt/remi/php74/run/php-fpm/www.sock
Всё успешно настроено.
В настройках nginx для сайта необходимо указать требуемый пул.
Например, прописать код fastcgi_pass unix:/var/opt/remi/php74/run/php-fpm/www.sock; в секции location ~ \.php$
Создание структуры каталогов для сайтов
Создадим корневые каталоги для сайтов. Каждый сайт будет использовать свою версию php:
mkdir /var/www/php72 mkdir /var/www/php74 mkdir /var/www/php81
Назначим необходимые права собственности и доступа на корневые каталоги сайтов:
chown -R nginx:nginx /var/www/php72 chown -R nginx:nginx /var/www/php74 chown -R nginx:nginx /var/www/php81 chmod -R 755 /var/www/php72 chmod -R 755 /var/www/php74 chmod -R 755 /var/www/php81
Команда chown передает права на каталоги сайтов пользователю nginx и группе nginx. Команда chmod изменяет права доступа этого пользователя и группы.
В каждом корневом каталоге мы создадим файл info.php. Позже он поможет нам отобразить информацию о версии PHP каждого веб-сайта:
echo "" > /var/www/php72/info.php echo "" > /var/www/php74/info.php echo "" > /var/www/php81/info.php
В случае если вы не хотите смотреть всю информацию можете использовать такой код файла info.php в котором выбрано отображение информации только о загруженных модулях:
Конфигурации NGIN для сайтов
Создадим для для каждого сайта свои конфигурационные файлы:
vim /etc/nginx/conf.d/php72.loc.conf = необходимый код = # php72.loc server < listen 80; server_name php72.loc; #access_log /var/www/php72/access_log main; #error_log /var/www/php72/error_log info; root /var/www/php72/; index index.php; location ~ \.php$ < fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; include fastcgi_params; #fastcgi_param HTTPS on; # Свои параметры PHP fastcgi_param PHP_VALUE "cgi.fix_pathinfo = 0"; fastcgi_param PHP_VALUE "max_execution_time = 300"; fastcgi_param PHP_VALUE "short_open_tag = On"; fastcgi_param PHP_VALUE "post_max_size = 12M"; fastcgi_param PHP_VALUE "upload_max_filesize = 12M"; fastcgi_param PHP_VALUE "max_input_time = 300"; #fastcgi_param PHP_VALUE "date.timezone = Europe/Moscow"; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; > >
vim /etc/nginx/conf.d/php74.loc.conf = необходимый код = # php74.loc server < listen 80; server_name php74.loc; #access_log /var/www/php74/access_log main; #error_log /var/www/php74/error_log info; root /var/www/php74/; index index.php; location ~ \.php$ < fastcgi_pass unix:/var/opt/remi/php74/run/php-fpm/www.sock; fastcgi_index index.php; include fastcgi_params; #fastcgi_param HTTPS on; # Свои параметры PHP fastcgi_param PHP_VALUE "cgi.fix_pathinfo = 0"; fastcgi_param PHP_VALUE "max_execution_time = 300"; fastcgi_param PHP_VALUE "short_open_tag = On"; fastcgi_param PHP_VALUE "post_max_size = 12M"; fastcgi_param PHP_VALUE "upload_max_filesize = 12M"; fastcgi_param PHP_VALUE "max_input_time = 300"; fastcgi_param PHP_VALUE "date.timezone = Europe/Moscow"; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; > >
vim /etc/nginx/conf.d/php81.loc.conf = необходимый код = # php81.loc server < listen 80; server_name php81.loc; #access_log /var/www/php81/access_log main; #error_log /var/www/php81/error_log info; root /var/www/php81/; index index.php; location ~ \.php$ < fastcgi_pass unix:/var/opt/remi/php81/run/php-fpm/www.sock; fastcgi_index index.php; include fastcgi_params; #fastcgi_param HTTPS on; # Свои параметры PHP fastcgi_param PHP_VALUE "cgi.fix_pathinfo = 0"; fastcgi_param PHP_VALUE "max_execution_time = 300"; fastcgi_param PHP_VALUE "short_open_tag = On"; fastcgi_param PHP_VALUE "post_max_size = 12M"; fastcgi_param PHP_VALUE "upload_max_filesize = 12M"; fastcgi_param PHP_VALUE "max_input_time = 300"; fastcgi_param PHP_VALUE "date.timezone = Europe/Minsk"; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; > >
Во всех файлах выделены строчки в которых делались изменения.
Особое внимание обращаю на блок отвечающий за персональные настройки php для ресурса:
# Свои параметры PHP fastcgi_param PHP_VALUE "cgi.fix_pathinfo = 0"; fastcgi_param PHP_VALUE "max_execution_time = 300"; fastcgi_param PHP_VALUE "short_open_tag = On"; fastcgi_param PHP_VALUE "post_max_size = 12M"; fastcgi_param PHP_VALUE "upload_max_filesize = 12M"; fastcgi_param PHP_VALUE "max_input_time = 300"; fastcgi_param PHP_VALUE "date.timezone = Europe/Moscow";
Используя этот код можно использовать различные ресурсы с разными параметрами php использующими одну версию php.
Проверка работы
Для проверки нам необходимо или прописать для каждого тестируемого ресурса DNS или на компьютере с которого производим проверку внести необходимые правки. В нашем случае система с которой проводится проверка работает на базе Linux и там необходимо внести следующие правки:
vim /etc/hosts = необходимые добавления = 192.168.0.206 php72.loc 192.168.0.206 php74.loc 192.168.0.206 php81.loc
Для проверки необходимо в строке браузера вписать путь http://ДОМЕН/info.php.
Вот так выглядит вывод для разных сайтов:






Обновление версий PHP
Обновление версий происходит обычным механизмом обновления и последующим перезапуском необходимых сервисов.
Для нашего случая команды будут иметь такую последовательность:
dnf update nginx -s reload systemctl restart php-fpm systemctl restart php74-php-fpm systemctl restart php81-php-fpm
Используя разные версии php на одном ресурсе можно спокойно перевести работу ресурса на новую версию и в случае проблем в работе оперативно вернутся на старую.
При использовании не сервере одной версии при переходе на другую версию необходимо было выполнять следующие действия:
- Остановка php-fpm,
- Вывод и удаление всех имеющихся пакетов php,
- Удаление старого и активирование нового репозитория требуемой версии php,
- Установка новой версии,
- Проверка настрое из старой версии,
- Запуск php-fpm и проверка сервиса.
Если ресурс рабочий выполнять все действия приходится оперативно и очень аккуратно для минимизирования простоя в работе ресурса.
Заключение
Данный вариант работы с разными версиями меня вполне устраивает и не вызывает проблем. В статье я специально сделал установку версии как с базовых репозиториев так и с репозитория Remi. На практике использовать базовый репозиторий не удобно, так как не удобно просматривать какие именно пакеты установлены в базовой версии. Запрос # rpm -qa | grep php выведет все имеющиеся версии.
Рекомендую использовать версии PHP от Remi это удобно и вызывает меньше путаницы.
Гораздо удобней смотреть вывод такой команды:
# rpm -qa | grep php81 php81-php-fpm-8.1.0~rc6-1.el8.remi.x86_64 php81-php-pecl-zip-1.20.0-1.el8.remi.x86_64 php81-php-soap-8.1.0~rc6-1.el8.remi.x86_64 php81-runtime-8.1-2.el8.remi.x86_64 php81-php-process-8.1.0~rc6-1.el8.remi.x86_64 php81-php-mysqlnd-8.1.0~rc6-1.el8.remi.x86_64 php81-php-xml-8.1.0~rc6-1.el8.remi.x86_64 php81-php-opcache-8.1.0~rc6-1.el8.remi.x86_64 php81-php-sodium-8.1.0~rc6-1.el8.remi.x86_64 php81-php-pecl-xmlrpc-1.0.0~rc2-3.el8.remi.x86_64 php81-php-ldap-8.1.0~rc6-1.el8.remi.x86_64 php81-php-pdo-8.1.0~rc6-1.el8.remi.x86_64 php81-php-mbstring-8.1.0~rc6-1.el8.remi.x86_64 php81-php-pear-1.10.13-1.el8.remi.noarch php81-php-gd-8.1.0~rc6-1.el8.remi.x86_64 php81-php-common-8.1.0~rc6-1.el8.remi.x86_64 php81-libzip-1.8.0-1.el8.remi.x86_64 php81-php-odbc-8.1.0~rc6-1.el8.remi.x86_64 php81-php-cli-8.1.0~rc6-1.el8.remi.x86_64 php81-8.1-2.el8.remi.x86_64 php81-php-snmp-8.1.0~rc6-1.el8.remi.x86_64
В любом случае какие версии использовать и с какими параметрами использовать необходимо смотреть в каждом конкретном случае. Нормальные разработчики ресурсов всегда указывают какие необходимо использовать версии php и с какими параметрами.
Понравилась статья? Поделитесь ей с друзьями!
Подписывайтесь на Telegram канал
Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.
Присоеденяйтесь к общению Telegram чате
Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.
Учавствуйте в проекте «Команда ADMINS»
Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.
Пожалуйста, оставляйте свои комментарии
Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.
