让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
发布于 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中安装了所有这些
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 2PHPStep3.php现在,在cli中随时更改版本非常容易。例如,当您的应用程序依赖于某些库,但它们与PHP8兼容,并且您想要更改默认的PHP版本以运行composer install时
现在,要配置website1在PHP8上运行,website2在PHP7.4上运行,我们需要配置两个-,并在不同的端口上运行。
更改默认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配置文件,以使用website1和website2的不同版本
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我们就完事了
发布于 2021-02-05 06:11:36
用sudo apt-get purge php7.4-common删除php7.4解决了我的问题。
发布于 2021-02-19 01:39:30
你可以有多个版本的php,但设置为默认开启。
使用此命令可设置默认值:
update-alternatives --config php使用默认值:
php ./script.php使用特定版本:
php7 ./script.php
php8 ./script.phphttps://stackoverflow.com/questions/66043552
复制相似问题