15

我需要列出给定代码库所需的所有 PHP 扩展。解决这个问题的最佳方法是什么?

我最初的想法是编写一个脚本来遍历所有文件并找到所有函数并将它们与给定的扩展/函数数据库进行比较。还有其他建议吗?


更新: 我已经用 grep 和 get_loaded_modules、get_extension_funcs PHP 函数做了一些 Bash 脚本,但这个扩展正是我想要的。

4

3 回答 3

13

一旦你学会了如何使用 PHP CompatInfo(不是 PEAR 扩展),它就很棒:

  1. 转到PHP CompatInfo站点
  2. 下载并安装工具
  3. 从他们的站点复制配置文件内容并将其放入名为phpcompatinfo.json的新文件中
  4. 运行以下命令(当前目录是放置 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
于 2014-09-04T13:07:05.237 回答
7

根据我的记忆,有一个 PEAR 包可以做到这一点: PHP_CompatInfo:

找出运行一段代码所需的最低版本和扩展

请参阅命令行解析器以了解如何从命令行运行它,并获取一些输出示例。


(它被标记为不再维护,因此最近版本的 PHP 可能存在一些问题,但我上次使用它时——可能是一年前——它运行良好)

于 2010-02-16T20:24:08.750 回答
1

作为 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
于 2021-01-21T19:00:59.857 回答