Несколько версий PHP для разных VirtualHost

Apache, NGINX, PHP ...

Модератор: ROOT

Несколько версий PHP для разных VirtualHost

Сообщение ROOT » 27 ноя 2017, 04:51

Несколько версий PHP для разных VirtualHost
Установка второй версии PHP
Код: выделить все
dnf install php56 php56-php-common php56-php-pear php56-php-mbstring php56-php-mcrypt php56-php-devel php56-php-xml php56-php-gd php56-php-ldap php56-php-odbc php56-php-xmlrpc php56-php-snmp php56-php-soap php56-php-mysqlnd php56-php-pgsql php56-php-imap

Если установившиеся версия не имеет модуля для Apache, то не спешим расстраиваться
Код: выделить все
dnf install php56-php-fpm

Далее настраиваем некоторые параметры PHP5.6. Приводим следующие опции в файле /etc/opt/remi/php56/php.ini к виду:
Код: выделить все
post_max_size = 32M
cgi.fix_pathinfo=0
upload_max_filesize = 32M

php-fpm — это fastcgi process manager. Он представляет из себя отдельную службу, которая работает независимо от какого-либо веб-сервера. Он может сам принимать запросы от веб-сервера через unix-сокет или через сетевое соединение. Другими словами, вы можете держать сайты на одном сервере, а php-скрипты исполнять на другом.
активируем юнит systemd и запускаем его
Код: выделить все
systemctl enable --now php56-php-fpm.service

Для разграничения версий PHP по хостам требуется внести изменения в конфигурационные файлы php-fpm
e /etc/httpd/conf.d/php56-php.conf
Код: выделить все
<IfModule !mod_php5.c>
    # Enable http authorization headers                                                                                                       
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    # !!!! Ограничиваем область действия версии PHP определённым хостом
    <Directory "/var/www/forum.free-adm.ru/public_html">
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/opt/remi/php56/run/php-fpm/forum.sock|fcgi://localhost"
     </FilesMatch>
     # !!!!
     </Directory>
</IfModule>

forum.sock это имя пула PHP-FPM. Для любого хоста может быть свой .sock файл пула со своими настройками для конкретного хоста. Описание самих пулов хранятся в конфигурационном каталоге php-fpm /etc/opt/remi/php56/php-fpm.d/forum.conf
Код: выделить все
[forum]
user = apache
group = apache
listen = /var/opt/remi/php56/run/php-fpm/forum.sock
listen.acl_users = apache
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
php_admin_value[error_log] = /var/www/forum.free-adm.ru/log/forum-php-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /var/www/forum.free-adm.ru/sess
php_value[soap.wsdl_cache_dir]  = /var/opt/remi/php56/lib/php/wsdlcache
php_admin_value[upload_tmp_dir] = /var/www/forum.free-adm.ru/tmp

имена .sock файлов и пути к ним должны совпадать в файле описания пулов php-fpm (/etc/opt/remi/php56/php-fpm.d/forum.conf) и конфигурационном файле WEB-сервера, подключающего php-fpm (/etc/httpd/conf.d/php56-php.conf)


Для вступления в силу изменений в конфигурации перезапускаем менеджер процессов FastCGI
Код: выделить все
systemctl restart php56-php-fpm.service

Если используется модуль Apache для связи с PHP то перезапускаем Apache
Код: выделить все
systemctl restart httpd.service

Либо можно так же ввести ограничения для иной версии PHP
Код: выделить все
e /etc/httpd/conf.d/php.conf

не забываем также про знак "!" - отрицание, чтобы исключить хост(ы) из обработки конкретной версией PHP
Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 417
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в Конфигурация WEB - сервисов

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron