可以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
扩展名可能不存在:
管理员禁用/卸载它:
;extension=json
安装的 PHP 版本是从源代码手动编译的,
json
扩展名被遗漏了:--disable-json
该扩展被捆绑为一个单独的包;例如,在 Fedora 上,您必须
php-json
显式安装该软件包。
您问题的重要部分:我们能否确信它始终可用
通常,我会说不。尽管这种特定扩展被禁用或遗漏的情况不太可能发生,但这并不意味着它不会发生。
如果您的目标受众仅限于可能不会接触这些设置的人,那么您可能是安全的,但不能保证。
我的建议:将您的库构建为Composer包,并声明ext-json
为依赖项。这样,您可以将安装说明作为 Composer 包提供,如果底层系统不满足您的包要求,安装将失败,并且将提醒用户缺少扩展。
- 1 回答
- 0 关注
- 50 浏览
添加回答
举报
0/150
提交
取消