Список используемых модулей PHP в кодовой базе

Мне нужно перечислить все расширения PHP, которые требуются для данной базы кода. Как лучше всего решить эту проблему?

Моей первоначальной мыслью было написать скрипт, который просматривает все файлы, находит все функции и сравнивает их с заданной базой данных расширений/функций. Любые другие предложения?


Обновление: я уже сделал несколько скриптов Bash с помощью grep и PHP-функций get_loaded_modules, get_extension_funcs, но это расширение — именно то, что я искал.


person ibrahim    schedule 16.02.2010    source источник
comment
Отвечает ли это на ваш вопрос? Как автоматически определить, какие расширения PHP используется проектом?   -  person kdmitry    schedule 30.12.2020


Ответы (3)


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
person hegemon    schedule 04.09.2014
comment
где phpcompatinfo.json? Должны ли мы создавать файл или заменять существующий файл? Он говорит, что каталог src/, но я не могу его найти. - person Philll_t; 07.11.2014
comment
Итак, для тех из вас, у кого были небольшие проблемы, вот что я сделал. Вы можете просто поместить его (phpcompatinof.json) в папку etc (linux) /etc/ и он запустится. - person Philll_t; 07.11.2014
comment
Я только что отредактировал ответ, чтобы было ясно, что phpcompatinfo.json — это новый файл, который нужно создать, а не существующий. - person hegemon; 10.11.2014
comment
Отличный ответ! Почему я не нашел это много лет назад? - person halfpastfour.am; 25.10.2017
comment
Файл phpcompatinfo.json больше не требуется для базового использования, документация обновлена. Теперь вам просто нужно установить инструмент и выполнить phpcompatinfo analyser:run . - person Cécile Fecherolle; 25.10.2018

Насколько я помню, есть пакет PEAR, который делает это: PHP_CompatInfo:

Узнайте минимальную версию и расширения, необходимые для запуска фрагмента кода.

См. Парсер командной строки, чтобы знать, как запустить его из командной строки и получить несколько примеров вывода.


(Он помечен как неподдерживаемый, так что могут быть некоторые проблемы с последними версиями PHP, но в последний раз, когда я использовал его - может быть, год назад - он работал нормально)

person Pascal MARTIN    schedule 16.02.2010
comment
Последняя версия (декабрь 2013 г.) PHP_CompatInfo доступна на сайте bartlett.laurent-laville.org. - person MV.; 18.04.2014

В качестве альтернативы 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
person Roger Gee    schedule 21.01.2021