Назад | Перейти на главную страницу

Запуск нескольких версий PHP в Ubuntu

Есть ли простой способ запустить несколько версий PHP на Ubuntu 10.04 (рабочий стол) и переключаться между ними?

Я избалован очень простой установкой и переключением PHP в WAMP для Windows. Это было бы для среды разработки.

У меня была такая же проблема, когда я работал с несколькими проектами. Я сослался Эта статья Но это было похоже на каждый раз, когда мне нужно было переключать версии, если нужно, но это дает гибкость для cli и web по отдельности.

Переход с php5.6 на php7.0

Для Apache мы можем использовать команду как:

sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart

Для CLI мы можем использовать команду как:

sudo update-alternatives --set php /usr/bin/php7.0

Переход с php7.0 на php5.6

Для Apache мы можем использовать команду как:

sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart

Для CLI мы можем использовать команду как:

sudo update-alternatives --set php /usr/bin/php5.6

Чтобы избежать установки и настройки двух или более веб-серверов (прослушивания двух или более портов), попробуйте прочитать следующее:

Идея состоит в том, чтобы вручную скомпилировать несколько версий PHP (./configure, ./make, но не ./make install) и загрузить запрашиваемое вами расширение PHP в вашу конфигурацию VirtualHost.

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

На первой странице появился еще один вопрос с устаревшими подходами, так что давайте ответим. В настоящее время PHP-FPM предоставляет решение, при котором вы можете одновременно установить несколько версий PHP. Это позволяет вам переключаться между версиями без a2enmod / a2dismod а также позволяет изменять это для одного проекта за раз.

Вот пример сервера с PHP 5.6, PHP 7.0 и PHP 7.2 работают одновременно.

  1. Это Debian 9. Точно так же любой дистрибутив может иметь пакеты только для одной версии PHP. я использую deb https://packages.sury.org/php/ stretch main в моих подходящих источниках.

  2. Установите хотя бы PHP-FPM для каждого: apt-get install php5.6-fpm php7.0-fpm php7.2-fpm.

  3. Каждый PHP-FPM имеет значение по умолчанию бассейн [www] настроен в /etc/php/x.y/fpm/pool.d где x.y представляет версию PHP. В производственных средах я бы предложил использовать новый пул для каждого сайта (см. Мой ответ о защите веб-сервера с отдельными пользователями), но для простоты я буду использовать эти пулы по умолчанию в этом примере. Это также может быть нормально в разработке.

  4. В твоем <VirtualHost> конфигурации, используйте прокси fcgi для запуска сценариев PHP с использованием пула FPM, например

    <FilesMatch "\.php$">
            SetHandler  "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost"
    </FilesMatch>
    <Proxy "fcgi://localhost/">
    </Proxy>
    
  5. Для переключения между версиями PHP используйте другой сокет (php7.0-fpm.sock, php7.2-fpm.sock) в SetHandler директива выше. После изменений перезагрузите конфигурацию Apache.