看起来很简单,但我无法在fedora 33上可靠地安装php 7.4以外的任何版本(根据remi,32似乎有同样的问题)。
PHP 7.4 是默认安装,但我需要工作的项目由于依赖项在 7.4 中不起作用而被锁定到 7.3 atm。
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 都可以使用相同的版本,我不介意多版本。
多年前,我选择仅提供单一版本版本 >= 默认分发版本。所以 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
或使用(我更喜欢这个)
我的存储库中的大多数打包 CLI 应用程序都应该可以正常工作(composer、phpunit*...),因为我确保使用启用的 SCL(使用“#!/usr/bin/env php”作为 shebang,而 /usr/bin/php总是在官方的 Fedora 软件包中使用)。
当然,需要 PHP >= 7.4 的软件包将不起作用(但我认为目前还没有)。
另一种方法是安装提供 /usr/bin/php 命令的php73-syspaths,但此包与 php-cli 冲突,因此您将无法安装任何打包的应用程序。
你可以阅读我的 PHP 工作站(很旧,可能需要刷新)
我被定向到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
再次使用该命令,但该包可能无法正常运行)。