command line interface - saber - Compruebe dinámicamente las extensiones de PHP cargadas desde la línea de comandos
ver extensiones php instaladas (3)
Estaba revisando el manual de PHP para comprender los diferentes tipos de extensiones de PHP (módulos de PHP). Hay módulos Zend (principalmente para gurús de PHP), módulos incorporados y módulos externos.
¿Hay alguna forma de saber desde la línea de comandos si un módulo PHP se ha cargado dinámicamente o si está incorporado en el binario de PHP?
Quiero decir: con php -m
obtengo todos los módulos cargados, pero me gustaría saber cuáles están incorporados y cuáles son externos.
1) Ejecutar
php -i
Desde la salida localizamos los siguientes parámetros:
Archivo de configuración cargado : esto especificará la ubicación del archivo php.ini que está utilizando su php.
Analice este directorio en busca de archivos .ini adicionales : si esto no está vacío, algunos de los archivos .ini en este directorio cargarán dinámicamente las extensiones php.
Análisis de archivos .ini adicionales: archivos .ini cargados desde el directorio especificado en el parámetro anterior.
Si está utilizando Linux podría:
php -i | grep -e "Loaded Configuration File" -e "Scan this dir for additional .ini files" -e "Additional .ini files parsed"
2) Cambie el nombre de su archivo php.ini y cambie el nombre de la carpeta con archivos .ini adicionales.
3) Repita el paso # 1 y verifique que el Archivo de configuración cargado y los archivos .ini adicionales analizados tengan un valor de (ninguno)
4) Ejecutar
php -m
Ahora verá una lista que contiene solo las extensiones que están integradas en el binario de php.
No estoy seguro de que esto sea posible desde el código PHP normal, puede haber algunas llamadas internas de Zend que puede hacer desde una extensión propia. Sin embargo, puede haber una manera descarada de adivinar, al verificar si una extensión cargada tiene una biblioteca dinámica que probablemente esté disponible ...
$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";
}
}
Eso no es infalible, ¡pero podría ser suficiente para ti!
Simplemente ejecute este comando en la línea de comandos:
php -m
o esto para más información:
php -i
Espero que esto ayude.