看起来很简单,但我无法在 fedora 33 上可靠地安装除 php 7.4 之外的任何版本(根据 remi,32 似乎也有同样的问题)。
PHP 7.4 是默认安装,但是我需要工作的项目目前被锁定在 7.3,因为依赖项在 7.4 中还无法工作。
Remi 存储库也无法安装低于 7.4 的版本,只有多个版本可以获得 7.3,但是如果您这样做,它也会安装 7.4,尽管您可以告诉 nginx 使用 7.3,但 cli 被锁定到 7.4(我敢打赌你可以做些什么,只是不确定如何,基本上必须使用php73
而不是php
cli 命令)。
使用 Fedora 33 的向导可以显示可用的版本以及如何使用。 https://rpms.remirepo.net/wizard/
有没有办法可靠地让 php 7.3 在 Fedora 33 上运行?只要 cli 和 fpm 都可以使用相同的版本,我不介意多版本。
答案1
几年前,我选择仅提供单一版本 >= 默认发行版。因此 F31 提供 7.3、7.4 和 8.0,F32+ 提供 7.4 和 8.0
当创建软件集合 (SCL) 以允许多个版本时,我选择同时提供旧版本,因此 F31+ 的版本为 5.6 到 8.0
因此,你确实必须在 F32+ 上使用 7.3 版的 SCL
对于 FPM,你只需要选择正确的套接字路径,甚至可以为不同的站点/项目运行不同的版本
对于 CLI,您必须使用以下方法启用 SCL
scl enable php73 bash
或者使用(我更喜欢这个)
module load php73
我的存储库中的大多数打包 CLI 应用程序都应该可以正常工作(composer、phpunit*……),因为我确保使用了启用的 SCL(使用“#!/usr/bin/env php”作为 shebang,而 /usr/bin/php 始终在官方 Fedora 软件包中使用)。
当然,需要 PHP >= 7.4 的软件包将无法工作(但我认为目前没有)。
另一种方法是安装php73-系统路径它提供 /usr/bin/php 命令,但是该包与 php-cli 冲突,因此您将无法安装任何打包的应用程序。
你可以阅读我的 PHP 工作站(相当旧,可能需要刷新)
答案2
我被引导到https://stackoverflow.com/questions/51377847/set-default-version-of-php-in-centos-7作为一种解决方案,它似乎也适用于 fedora 33。
scl enable php73 bash
是您想要用来设置php
引用的内容php73
缺陷在于没有安装 composer 或其他需要 php 的包,因为这样做会安装 php 7.4 并接管 php-cli(您可能可以scl
再次使用该命令,但该包可能无法正确运行)。