Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Проверьте динамически загружаемые расширения PHP из командной строки

Автор вопроса: rodrunnerОтветов: 3

Я просматривал руководство по PHP, чтобы понять различные типы расширений PHP ( модули PHP). Существуют модули Zend (в основном для гуру PHP), встроенные модули и внешние модули.

Есть ли способ узнать из командной строки, был ли модуль PHP загружен динамически или встроен в двоичный файл PHP?

Я имею в виду: с php -m я получаю все загруженные модули, но хотелось бы знать, какие из них встроенные, а какие внешние.

command-line-interfacephp-extension

Ответы

Ответ 1 · рейтинг 2 · Paul Dixon

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

$extdir=ini_get('extension_dir');

$modules=get_loaded_extensions();
foreach($modules as $m){
    $lib=$extdir.'/'.$m.'.so';
    if (file_exists($lib)) {
        print "$m: dynamically loaded\n";
    } else {
        print "$m: statically loaded\n";
    }
}

Это не надежно, но может быть достаточно для вас!

Ответ 2 · рейтинг 71 · mineroot

Просто запустите эту команду в командной строке:

php -m

или это для получения дополнительной информации:

php -i

Надеюсь это поможет.

Ответ 3 · рейтинг 8 · Hillel Barak

1) Бежать

php -i

на выходе найдите следующие параметры:

Загруженный файл конфигурации - здесь будет указано расположение файла php.ini, используемого вашим php.

Просканируйте этот каталог на наличие дополнительных файлов .ini. Если он не пуст, некоторые из файлов .ini в этом каталоге будут динамически загружать расширения php.

Проанализированы дополнительные файлы .ini - файлы .ini загружаются из каталога, указанного в предыдущем параметре.

Если вы используете Linux, вы можете:

php -i | grep -e "Loaded Configuration File" -e "Scan this dir for additional .ini files" -e "Additional .ini files parsed"

2) Переименуйте файл php.ini и переименуйте папку с дополнительными файлами .ini.

3) Повторите шаг 1 и убедитесь, что Загруженный файл конфигурации и Проанализированные дополнительные файлы .ini имеют значение (нет).

4) Беги

php -m

Теперь вы увидите список, содержащий только расширения, встроенные в двоичный файл php.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы