Есть ли простой способ запустить несколько версий 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 работают одновременно.
Это Debian 9. Точно так же любой дистрибутив может иметь пакеты только для одной версии PHP. я использую deb https://packages.sury.org/php/ stretch main
в моих подходящих источниках.
Установите хотя бы PHP-FPM для каждого: apt-get install php5.6-fpm php7.0-fpm php7.2-fpm
.
Каждый PHP-FPM имеет значение по умолчанию бассейн [www]
настроен в /etc/php/x.y/fpm/pool.d
где x.y
представляет версию PHP. В производственных средах я бы предложил использовать новый пул для каждого сайта (см. Мой ответ о защите веб-сервера с отдельными пользователями), но для простоты я буду использовать эти пулы по умолчанию в этом примере. Это также может быть нормально в разработке.
В твоем <VirtualHost>
конфигурации, используйте прокси fcgi для запуска сценариев PHP с использованием пула FPM, например
<FilesMatch "\.php$">
SetHandler "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost"
</FilesMatch>
<Proxy "fcgi://localhost/">
</Proxy>
Для переключения между версиями PHP используйте другой сокет (php7.0-fpm.sock
, php7.2-fpm.sock
) в SetHandler
директива выше. После изменений перезагрузите конфигурацию Apache.