При работе с PHP на сервере Ubuntu, на котором в качестве веб-сервера используется Nginx, вам может потребоваться переключение между различными версиями PHP в целях совместимости или тестирования. В этой статье мы рассмотрим несколько методов выполнения этой задачи и предоставим примеры кода для каждого метода.
Метод 1: использование сокета PHP-FPM
PHP-FPM (менеджер процессов FastCGI) можно настроить с использованием разных файлов сокетов для каждой версии PHP. Чтобы переключиться между версиями PHP, выполните следующие действия:
-
Установить дополнительные версии PHP:
sudo apt-get install php7.4-fpm sudo apt-get install php8.0-fpm -
Настройте блоки сервера Nginx.
Создайте отдельные блоки сервера для каждой версии PHP в файле конфигурации Nginx (/etc/nginx/sites-available/default) следующим образом:server { listen 80; server_name example.com; # PHP 7.4 location ~ \.php$ { include snippets/fastcgi-php7.4.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } # PHP 8.0 location ~ \.php$ { include snippets/fastcgi-php8.0.conf; fastcgi_pass unix:/run/php/php8.0-fpm.sock; } } -
Перезапустите Nginx:
sudo service nginx restart
Метод 2: использование TCP-сокетов PHP-FPM
Вместо использования файлов сокетов вы можете настроить PHP-FPM на использование TCP-сокетов. Этот метод позволяет переключаться между версиями PHP без изменения конфигурации Nginx.
-
Отредактируйте файлы конфигурации пула PHP-FPM:
sudo nano /etc/php/7.4/fpm/pool.d/www.conf sudo nano /etc/php/8.0/fpm/pool.d/www.conf -
Измените директиву Listen в каждом файле, чтобы использовать разные TCP-порты:
# PHP 7.4 listen = 127.0.0.1:9001 # PHP 8.0 listen = 127.0.0.1:9002 -
Перезапустите службы PHP-FPM:
sudo service php7.4-fpm restart sudo service php8.0-fpm restart
Метод 3: использование диспетчера версий PHP (phpbrew)
Менеджер версий PHP (phpbrew) — это инструмент, позволяющий легко переключаться между различными версиями PHP.
-
Установить phpbrew:
curl -L -O https://github.com/phpbrew/phpbrew/releases/latest/download/phpbrew.phar chmod +x phpbrew.phar sudo mv phpbrew.phar /usr/local/bin/phpbrew -
Инициализировать phpbrew:
phpbrew init source ~/.phpbrew/bashrc -
Установить версии PHP:
phpbrew install 7.4 +default phpbrew install 8.0 +default -
Переключение между версиями PHP:
phpbrew switch php7.4 phpbrew switch php8.0
Переключение между версиями PHP на сервере Ubuntu с помощью Nginx имеет решающее значение для обеспечения совместимости и тестирования приложений. В этой статье мы рассмотрели три метода: использование сокетов PHP-FPM, использование TCP-сокетов PHP-FPM и использование диспетчера версий PHP (phpbrew). Выберите метод, который лучше всего соответствует вашим потребностям, и соответствующим образом настройте конфигурацию вашего сервера.