可以禁用 ext-json 吗?

可以json在 PHP 中禁用扩展吗?医生

从 PHP 5.2.0 开始,JSON 扩展被默认捆绑并编译到 PHP 中。

但是评论里有人说json扩展有时是作为一个单独的包提供的。

json扩展是否可以明确禁用,或者我们是否可以确信它始终可用?


背景:我想在我的库中创建一个类 implement JsonSerializable,但如果接口并不总是被声明,那么这可能是一个 BC 中断,并且库突然依赖于一个并不总是可用的扩展。


冉冉说
浏览 130回答 1
1回答

慕尼黑的夜晚无繁华

PHP 8:不,不能再禁用JSON 扩展。PHP 7:是的,可以随意安装、卸载、启用或禁用任何 PHP 扩展。扩展 - 尽管它无处不在json- 仍然只是一个扩展,也可以通过这种方式删除。在以下几种情况下,json扩展名可能不存在:管理员禁用/卸载它: ;extension=json安装的 PHP 版本是从源代码手动编译的,json扩展名被遗漏了: --disable-json该扩展被捆绑为一个单独的包;例如,在 Fedora 上,您必须php-json显式安装该软件包。您问题的重要部分:我们能否确信它始终可用通常,我会说不。尽管这种特定扩展被禁用或遗漏的情况不太可能发生,但这并不意味着它不会发生。如果您的目标受众仅限于可能不会接触这些设置的人,那么您可能是安全的,但不能保证。我的建议:将您的库构建为Composer包,并声明ext-json为依赖项。这样,您可以将安装说明作为 Composer 包提供,如果底层系统不满足您的包要求,安装将失败,并且将提醒用户缺少扩展。
打开App,查看更多内容
随时随地看视频慕课网APP