PhpStorm 为什么提示 ext-json is missing in composer.json
问题
PhpStorm 为什么提示 ext-json is missing in composer.json
表象解决
通常的解决方案,按照提示在 composer.json
文件中配置下就完事了,甚至可以用快捷键 Alt + Shift + Enter
解决。
1 |
|
真正原因
这个问题我遇到几次了,每次都谷歌搜索然后如上面的方法解决,但是真正的原因从来没有去研究过,所以今天了解后记录下来,希望知其然,更知其所以然。
其实原因很简单,就是 PhpStorm
在2018.2版本时加上了一个检查,什么检查呢,就是检查 PHP 扩展是否在 composer.json
文件中定义,假如没有定义,而又在项目中或者依赖包中使用到了其中的函数方法,类似 json_encode()
那么就会产生提示。
It is important to list PHP extensions your project requires. Not all PHP installations are created equal: some may miss extensions you may consider as standard (such as ext-mysqli which is not installed by default in Fedora/CentOS minimal installation systems). Failure to list required PHP extensions may lead to a bad user experience: Composer will install your package without any errors but it will then fail at run-time. The show –platform command lists all PHP extensions available on your system. You may use it to help you compile the list of extensions you use and require. Alternatively you may use third party tools to analyze your project for the list of extensions used.
上面这段就是 PhpStorm
官方的解释。列出项目所需的 PHP 扩展非常重要。 并非所有 PHP 安装都是平等的:有些可能会错过您可能认为是标准的扩展(例如 ext-mysqli,它在 Fedora/CentOS 最小安装系统中默认不安装)。 未能列出所需的 PHP 扩展可能会导致糟糕的用户体验:Composer 将安装您的包而不会出现任何错误,但它会在运行时失败。 show –platform 命令列出系统上所有可用的 PHP 扩展。 您可以使用它来帮助您编译您使用和需要的扩展列表。 或者,您可以使用第三方工具来分析您的项目以获取所使用的扩展列表。
最后
PHP 8.0: JSON extension is always available 这篇文章告诉我们在 PHP8.0 版本 JSON扩展已经默认安装了,也就解决标题的问题了。
推荐阅读
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!