我需要列出给定代码库所需的所有PHP扩展。 什么是解决这个问题的最佳方法?
我最初的想法是编写一个遍历所有文件的脚本,找到所有函数并将它们与给定的扩展/函数数据库进行比较。还有其他建议吗?
更新:我已经使用grep和使用get_loaded_modules,get_extension_funcs PHP函数做了一些Bash脚本,但这个扩展正是我想要的。
答案 0 :(得分:12)
一旦你学会了如何使用它,PHP CompatInfo(不是PEAR扩展)就很棒了:
运行以下命令(当前目录是放置phpcompatinfo.json的目录)
phpcompatinfo analyser:run . extension
您将获得如下输出:
Extensions Analysis
Extension REF EXT min/Max PHP min/Max
Core 4.2.0 4.2.0
PDO 5.1.0 5.1.0
Reflection 5.0.0 5.0.0
calendar 4.0.0 4.0.0
date 5.3.0 5.3.0
filter 0.11.0 5.0.0
gettext 4.0.0 4.0.0
iconv 4.0.5 4.0.5
json 5.4.0 5.4.0
mbstring 4.4.3 4.4.3
pcre 4.0.0 4.0.0
session 4.0.3 4.0.3
spl 5.4.0 5.4.0
standard 5.5.0 5.5.0
Total [14] 5.5.0
答案 1 :(得分:7)
根据我的记忆,有一个PEAR包可以做到这一点:PHP_CompatInfo
:
找出最低版本和 一块片所需的扩展 要运行的代码
请参阅The Command-Line Parser以了解如何从命令行运行它,并获取一些输出示例。
(它被标记为不再维护,因此最近的PHP版本可能存在一些问题,但上次我使用它 - 也许一年前 - 它工作正常)
答案 2 :(得分:0)
作为 PHP CompatInfo 的替代方案,我为 PHP 7 开发了一个类似的工具。它没有像 CompatInfo 那样提供详细的信息,但确实列出了您的项目所需的扩展。
见:https://github.com/RogerGee/php-ext-depends
示例用法:
$ php depends.php --suffix .php ~/code/open-source/drupal/core
Core (builtin)
ctype
curl
date (builtin)
dom
filter
hash
iconv
json
libxml
pcre (builtin)
PDO
posix
readline
Reflection (builtin)
session
SimpleXML
SPL (builtin)
standard (builtin)
xml
zlib