首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让PHP7和PHP8共存

让PHP7和PHP8共存
EN

Stack Overflow用户
提问于 2021-02-04 18:15:26
回答 4查看 2.4K关注 0票数 3

让PHP7和PHP8共存

我已经从PHP7升级到PHP8,就像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 (但我不确定这个问题是不是操作系统特有的)。

Zlotz

EN

回答 4

Stack Overflow用户

发布于 2021-05-15 21:53:05

正如@Abilogos在他的回答中提到的,你可以有多个版本的php使用update-alternatives和cli,设置为默认值的版本将与php命令一起工作,但当涉及到运行一个特定版本的网站与Apache/Nginx,它变得困难,我也面临这个事情最近当我想让我的代码并行PHP8兼容,而不是阻碍现有的工作代码,最后我能够得到我需要的东西,使所有这些事情工作。

这是我在Fedora 33上做的事情

步骤1.安装PHP8.0作为默认版本,使用Remi repo,我还安装了其他版本(5.6,7.0,7.1,7.2,7.3和7.4)

PHP2.php步骤2.我检查了一下update-alternatives,将版本从8.0改为7.4,但是里面没有条目。因此,我在update-alternatives中安装了所有这些

代码语言:javascript
复制
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

PHPStep3.php现在,在cli中随时更改版本非常容易。例如,当您的应用程序依赖于某些库,但它们与PHP8兼容,并且您想要更改默认的PHP版本以运行composer install

现在,要配置website1在PHP8上运行,website2在PHP7.4上运行,我们需要配置两个-,并在不同的端口上运行。

更改默认PHP-FPM端口

代码语言:javascript
复制
vim /etc/php-fpm.d/www.conf

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

类似地,更改PHP-FPM 7.4端口

代码语言:javascript
复制
vim /etc/opt/remi/php74/php-fpm.d/www.conf

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

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

代码语言:javascript
复制
systemctl start php-fpm
systemctl start php74-php-fpm

步骤5.更改vhost配置文件,以使用website1和website2的不同版本

代码语言:javascript
复制
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

代码语言:javascript
复制
systemctl restart httpd

我们就完事了

票数 1
EN

Stack Overflow用户

发布于 2021-02-05 06:11:36

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

票数 0
EN

Stack Overflow用户

发布于 2021-02-19 01:39:30

你可以有多个版本的php,但设置为默认开启。

使用此命令可设置默认值:

代码语言:javascript
复制
update-alternatives --config  php

使用默认值:

代码语言:javascript
复制
php ./script.php

使用特定版本:

代码语言:javascript
复制
php7 ./script.php
php8 ./script.php
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66043552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档