使PHP7和PHP8共存

hts6caw3  于 2023-02-03  发布在  PHP
关注(0)|答案(4)|浏览(514)

使PHP7和PHP8共存
我已经从PHP 7升级到了PHP 8,就像PHP通常的情况一样,我在/usr/bin中仍然有php7.4(还有php8.0),但是,当我运行php -v命令时,它回答php8.0。
从那时起,当我试图安装软件(例如Docker和VirtualBox)时,我得到错误消息php7.4-fpm.service: Failed with result 'exit-code',然后是Failed to start The PHP 7.4 FastCGI Process Manager。因此,我似乎需要运行php7. 4来安装此类应用程序。
但是我使用PHP8的功能来编写网站代码,因此不想回到php7.4
有没有同时使用php8.0和php7.4的方法?我可以让php8在虚拟机上工作,但它很重。
我使用的是Ubuntu 20(但我不确定这个问题是否特定于操作系统)。
兹洛茨

mzillmmw

mzillmmw1#

正如@Abilogos在他的回答中提到的,你可以使用update-alternatives和cli有多个版本的php,设置为默认的版本将与php命令一起工作,但当涉及到使用Apache/Nginx为网站运行特定版本时,它得到“这很困难,最近我也遇到了这个问题,当时我想让我的代码与PHP 8并行兼容,而不妨碍现有的工作代码和最后我终于得到了我所需要的东西,使这一切的工作。
下面是我在Fedora 33上所做的

**步骤1.**安装PHP 8.0作为默认版本,并使用Remi repo,我已经安装了其他PHP版本以及(5.6,7.0,7.1,7.2,7.3 & 7.4)
**步骤2.**我检查了update-alternatives以将PHP版本从8.0更改为7.4,但没有条目。因此,我将所有这些都安装在update-alternatives

cp /usr/bin/php /usr/bin/php80 
update-alternatives --install /usr/bin/php php /usr/bin/php80 0
update-alternatives --install /usr/bin/php php /opt/remi/php74/root/usr/bin/php 1
update-alternatives --install /usr/bin/php php /opt/remi/php73/root/usr/bin/php 2

**第3步。**现在,您可以随时在cli中轻松更改PHP版本。例如,当您的应用程序依赖于某些库,但这些库与PHP 8兼容,并且您希望更改默认PHP版本以运行composer install
**步骤4.**现在,要配置website 1在PHP 8上运行,website 2在PHP 7.4上运行,我们需要配置两个PHP-FPM,并在不同的端口上运行。

更改默认PHP-FPM端口

vim /etc/php-fpm.d/www.conf

;listen = /run/php-fpm/www.sock
listen = 9001

同样,更改PHP-FPM 7.4端口

vim /etc/opt/remi/php74/php-fpm.d/www.conf

;listen = /run/php-fpm/www.sock
listen = 9002

启动/重新启动PHP-FPM服务

systemctl start php-fpm
systemctl start php74-php-fpm

**步骤5.**更改vhost配置文件,以便对website 1和website 2使用不同版本的PHP

vim /etc/httpd/conf.d/website1.conf 

<FilesMatch \.php$>
    # PHP 8.0
    SetHandler "proxy:fcgi://127.0.0.1:9001"
</FilesMatch>

vim /etc/httpd/conf.d/website2.conf

<FilesMatch \.php$>
    # PHP 7.4
    SetHandler "proxy:fcgi://127.0.0.1:9002"
</FilesMatch>

重新启动Apache/Nginx

systemctl restart httpd

我们就完事了

ki0zmccv

ki0zmccv2#

你可以有多个版本的php,但是只有一个可以被设置为默认版本。
使用此设置默认值:

update-alternatives --config  php

使用默认值:

php ./script.php

使用特定版本:

php7 ./script.php
php8 ./script.php
kxkpmulp

kxkpmulp3#

sudo apt-get purge php7.4-common删除php7.4解决了我的问题。

相关问题