2012-08-28 6 views
8

Necesito una forma de encontrar todas las extensiones de PHP disponibles ya sea que estén cargadas o no. Miré How do I see the extensions loaded by PHP? pero solo explica cómo encontrar extensiones cargadas. Quiero una forma de encontrar extensiones descargadas también.Buscar extensiones de PHP disponibles (no cargadas)

Conociendo el extension_dir de php.ini Hice un ls /extension_dir/*.so que devolvió 26 entradas. Cuando probé con php -m, obtuve 57 entradas. ¿Como es posible?

¿Cómo sé qué extensiones de PHP están disponibles para cargar? No quiero saber cuáles están cargados pero que son cargables.

+2

Algunas extensiones están incorporados sin archivo externo. –

+1

Simplemente poner las bibliotecas de extensión en un directorio no significa necesariamente que estén cargadas por php. ver http://docs.php.net/manual/en/ini.core.php#ini.extension – VolkerK

+0

@matteo Tassinari, ¿cómo? ¿está definido en tiempo de compilación o es parte de php? – maazza

Respuesta

2

Si desea la lista de extensiones posiblemente cargables, debe obtener la lista de archivos con una extensión igual al valor PHP_SHLIB_SUFFIX, y que se encuentran en el directorio donde PHP busca extensiones de PHP (<install-dir>/lib/php/extensions/<debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO). Si desea evitar las extensiones que ya están cargadas, debe pasar el nombre de la extensión (sin extensión de archivo) al extension_loaded().

Tenga en cuenta que un archivo con la extensión de archivo correcta no se pudo cargar desde PHP como extensión porque el archivo no tiene la estructura correcta (por ejemplo, porque el archivo está dañado) o porque la extensión PHP depende de archivos que la extensión no encuentra, o no puede cargar.

+0

gracias por esta exhaustiva respuesta – maazza

4

Tenga en cuenta que algunas extensiones se pueden construir estáticamente en PHP. Verá estas listas como extensiones en php.ini, pero no será capaz de deshabilitarlas, y en la mayoría de los casos no verá una extensión = haciendo referencia a ellas en php.ini o .so/.DLL archivos. La eliminación de extensiones compiladas estáticamente requiere recompilar PHP, y en la mayoría de los casos esto apenas es necesario ya que la mayoría de las extensiones estáticamente compiladas tienden a incluir funcionalidad central que rara vez necesita ser eliminada.

http://arr.gr/blog/2012/06/on-php-extensions/

gracias van a Matteo Tassinari.

+0

+1 para su respuesta –

+0

¿De qué manera responde esto a la pregunta? – kiamlaluno

+0

¿Ya no están habilitadas las extensiones de compilación estáticas? Si la pregunta es acerca de las extensiones que aún deben cargarse, entonces eso excluye las extensiones vinculadas estáticamente. – kiamlaluno

1

Una forma es comprobar el valor 'extension_dir':

phpinfo(); 

continuación, analizar el directorio para ver los archivos:

$exts = scandir("/usr/lib/php5/extension_dir/"); 
print_r($exts); 
Cuestiones relacionadas