有没有一种简单的方法可以在 Ubuntu 10.04(桌面版)上运行多个版本的 PHP,并在它们之间切换?
我对 Windows 版 WAMP 中 PHP 的安装和切换非常轻松感到满意。这适用于开发环境。
答案1
这个想法是手动编译几个版本的 PHP(./configure,./make 但不是 ./make install),并在您的 VirtualHost 配置中加载您请求的 PHP 扩展。
这样,您可以推迟加载 PHP 库,直到需要它为止,并且可以为每个 VirtualHost 选择不同的 PHP 库。
答案2
为了避免安装和配置两个或多个 Web 服务器(在两个或多个端口上监听),请尝试阅读以下内容:
答案3
我在处理多个项目时也遇到了同样的问题。我提到本文 但就像每次我需要在需要时切换版本一样,但这为 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
答案4
另一个采用过时方法的问题出现在头版,所以让我们来回答。a2enmod
如今,PHP-FPM 提供了一种解决方案,您可以同时安装多个版本的 PHP。它使您能够在没有/ 的情况下在版本之间切换,a2dismod
并且还允许一次为一个项目更改它。
以下是一个服务器示例PHP 5.6、PHP 7.0 和 PHP 7.2 同时运行。
此服务器是 Debian 9。同样,任何发行版可能只有一个 PHP 版本的软件包。我
deb https://packages.sury.org/php/ stretch main
在我的 apt 源中使用。为每个至少安装 PHP-FPM
apt-get install php5.6-fpm php7.0-fpm php7.2-fpm
:。每个 PHP-FPM 都带有一个默认水池
[www]
配置在代表 PHP 版本的/etc/php/x.y/fpm/pool.d
位置x.y
。在生产环境中,我建议为每个站点使用一个新池(请参阅我的回答保护具有单独用户的 Web 服务器的安全),但为了简单起见,我将在此示例中使用这些默认池。在开发中也可能没问题。在您的
<VirtualHost>
配置中,使用 fcgi 代理通过 FPM 池运行 PHP 脚本,例如<FilesMatch "\.php$"> SetHandler "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost" </FilesMatch> <Proxy "fcgi://localhost/"> </Proxy>
php7.0-fpm.sock
通过在上面的指令中使用不同的套接字( ,php7.2-fpm.sock
)来在 PHP 版本之间进行切换SetHandler
。更改后重新加载 Apache 的配置。