为了账号安全,请及时绑定邮箱和手机立即绑定

可以禁用 ext-json 吗?

可以禁用 ext-json 吗?

PHP
冉冉说 2022-12-23 16:21:03
可以json在 PHP 中禁用扩展吗?医生说:从 PHP 5.2.0 开始,JSON 扩展被默认捆绑并编译到 PHP 中。但是评论里有人说json扩展有时是作为一个单独的包提供的。该json扩展是否可以明确禁用,或者我们是否可以确信它始终可用?背景:我想在我的库中创建一个类 implement JsonSerializable,但如果接口并不总是被声明,那么这可能是一个 BC 中断,并且库突然依赖于一个并不总是可用的扩展。
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

PHP 8:

不,不能再禁用JSON 扩展。

PHP 7:

是的,可以随意安装、卸载、启用或禁用任何 PHP 扩展。

扩展 - 尽管它无处不在json- 仍然只是一个扩展,也可以通过这种方式删除。

在以下几种情况下,json扩展名可能不存在:

  1. 管理员禁用/卸载它:

     ;extension=json
  2. 安装的 PHP 版本是从源代码手动编译的,json扩展名被遗漏了:

     --disable-json
  3. 该扩展被捆绑为一个单独的包;例如,在 Fedora 上,您必须php-json显式安装该软件包。

您问题的重要部分:我们能否确信它始终可用

通常,我会说不。尽管这种特定扩展被禁用或遗漏的情况不太可能发生,但这并不意味着它不会发生。

如果您的目标受众仅限于可能不会接触这些设置的人,那么您可能是安全的,但不能保证。

我的建议:将您的库构建为Composer包,并声明ext-json为依赖项。这样,您可以将安装说明作为 Composer 包提供,如果底层系统不满足您的包要求,安装将失败,并且将提醒用户缺少扩展。


查看完整回答
反对 回复 2022-12-23
  • 1 回答
  • 0 关注
  • 50 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信