Переключение между версиями PHP в Ubuntu с помощью Nginx: подробное руководство

При работе с PHP на сервере Ubuntu, на котором в качестве веб-сервера используется Nginx, вам может потребоваться переключение между различными версиями PHP в целях совместимости или тестирования. В этой статье мы рассмотрим несколько методов выполнения этой задачи и предоставим примеры кода для каждого метода.

Метод 1: использование сокета PHP-FPM
PHP-FPM (менеджер процессов FastCGI) можно настроить с использованием разных файлов сокетов для каждой версии PHP. Чтобы переключиться между версиями PHP, выполните следующие действия:

  1. Установить дополнительные версии PHP:

    sudo apt-get install php7.4-fpm
    sudo apt-get install php8.0-fpm
  2. Настройте блоки сервера 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;
    }
    }
  3. Перезапустите Nginx:

    sudo service nginx restart

Метод 2: использование TCP-сокетов PHP-FPM
Вместо использования файлов сокетов вы можете настроить PHP-FPM на использование TCP-сокетов. Этот метод позволяет переключаться между версиями PHP без изменения конфигурации Nginx.

  1. Отредактируйте файлы конфигурации пула PHP-FPM:

    sudo nano /etc/php/7.4/fpm/pool.d/www.conf
    sudo nano /etc/php/8.0/fpm/pool.d/www.conf
  2. Измените директиву Listen в каждом файле, чтобы использовать разные TCP-порты:

    # PHP 7.4
    listen = 127.0.0.1:9001
    # PHP 8.0
    listen = 127.0.0.1:9002
  3. Перезапустите службы PHP-FPM:

    sudo service php7.4-fpm restart
    sudo service php8.0-fpm restart

Метод 3: использование диспетчера версий PHP (phpbrew)
Менеджер версий PHP (phpbrew) — это инструмент, позволяющий легко переключаться между различными версиями PHP.

  1. Установить 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
  2. Инициализировать phpbrew:

    phpbrew init
    source ~/.phpbrew/bashrc
  3. Установить версии PHP:

    phpbrew install 7.4 +default
    phpbrew install 8.0 +default
  4. Переключение между версиями PHP:

    phpbrew switch php7.4
    phpbrew switch php8.0

Переключение между версиями PHP на сервере Ubuntu с помощью Nginx имеет решающее значение для обеспечения совместимости и тестирования приложений. В этой статье мы рассмотрели три метода: использование сокетов PHP-FPM, использование TCP-сокетов PHP-FPM и использование диспетчера версий PHP (phpbrew). Выберите метод, который лучше всего соответствует вашим потребностям, и соответствующим образом настройте конфигурацию вашего сервера.