No se puede cargar la extensión pdo_sqlite.so

Estoy tratando de instalar la extensión pdosqlite para el cli.

He intentado ejecutar sudo apt-get install php5-sqlite y dice que la extensión ya está actualizada, pero cuando ejecuto php -m no aparece en la lista.

En mi / usr / lib / php / folder tengo 2 carpetas llamadas 20131226 y 20160303. La última (20160303) contiene pdo_sqlite.so, pero cuando bash agregar esto al archivo php.ini, aparece el error.

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/pdo_sqlite.so' - /usr/lib/php/20160303/pdo_sqlite.so: undefined symbol: zend_fetch_resource2_ex in Unknown on line 0

Estoy ejecutando Ubuntu 14.04 y PHP 5.6.

¿Alguien puede ayudar con este problema? Además, ¿hay alguien capaz de explicar por qué las extensiones de php se almacenan en estas diferentes carpetas numeradas y cómo php sabe en cuál de ellas mirar? Gracias.

Tienes (al menos parte de) dos versiones diferentes de php instaladas, y están en conflicto. Probablemente querrá limpiar la versión que no está usando para evitar más problemas. Podría ser más fácil simplemente borrar ambos y luego reinstalar el que quieras. También asegúrese de que su php.ini tenga su configuración de dirección de extension_dir que apunte al directorio correcto para la versión que está manteniendo.

La API interna de PHP está versionada según la fecha, por lo que cuando se realicen cambios incompatibles con versiones anteriores y se requiera una nueva versión, obtendrá un nuevo nombre de subdirectorio. Si los cambios son compatibles con versiones anteriores y no se requiere una nueva versión de API, entonces puede hacer actualizaciones menores a su versión de PHP sin tener que volver a comstackr sus extensiones.

Creo que 20131226 es para PHP versión 5.6 y 20160303 es para PHP versión 7.

Sé que esta pregunta ha sido respondida, pero otras personas pueden tener el mismo problema que yo. Espero que esto ayude a alguien, porque pasé tres días jodidos en esto.

Por lo que he descubierto, hay un archivo defectuoso en /usr/local/lib llamado libsqlite3.so.0 que apunta a libsqlite3.so.0.8.6 . Cambié el nombre del archivo en caso de que fuera necesario para algo. Con el comando:

cd /usr/local/lib

sudo mv libsqlite3.so.0 ./libsqlite3.so.0.back

Pero también puedes eliminarlo: rm libsqlite3.so.0

El hilo que me lleva a la respuesta: enlace.

Esto resolvió mis problemas, y espero que ellos también resuelvan los tuyos 🙂