'Unable to load pdo_sqlite.so extension

I'm trying to install the pdo-sqlite ext for the cli.

I have tried to run sudo apt-get install php5-sqlite and it says the ext is already up to date but when i run php -m it does not appear in the list.

In my /usr/lib/php/ folder I have 2 folders named 20131226 and 20160303. The latter one (20160303) contains pdo_sqlite.so but when i try to add this to the php.ini file i get the 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

I am running ubuntu 14.04 and php 5.6.

Is anyone able to help with this problem? Also is anyone able to explain why the php extensions are stored in these different numbered folders and how php knows which one to look in? Thanks.



Solution 1:[1]

I know this question has been answered, but other people might have the same problem as I did. I hope this helps someone, because I spent three f***ing days stuck on this.

As far as I have found out, there is a faulty file in /usr/local/lib called libsqlite3.so.0 which points to libsqlite3.so.0.8.6. I renamed the file in case it was needed for something. With the command:

cd /usr/local/lib

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

But you can also delete it: rm libsqlite3.so.0

The thread that lead me to the answer: link

This solved my problems, and I hope they solve yours as well :)

Solution 2:[2]

I tried to delete the library as mentioned in the previous comments and it worked for a short time then the problem came up again, so I did the following, when I deleted the library when doing ldd /usr/lib/php/20190902/pdo_sqlite. It appeared:

libsqlite3.so.0 => lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007fd35803b000)

and that link points in the same directory to libsqlite3.so.0.8.6

so replace the link in /usr/local/lib to point to this library as follows

sudo ln -sf /lib/x86_64-linux-gnu/libsqlite3.so.0.8.6 /usr/local/lib/libsqlite3.so.0

sorry, I don't speak English so I use google translator

Solution 3:[3]

you can try install php version 5 :

sudo apt install php5-sqlite3

or for another version :

PHP 7.1

sudo apt install php7.1-sqlite3

PHP 7.2

sudo apt install php7.2-sqlite3

PHP 7.3

sudo apt install php7.3-sqlite3

and another version you want....

Solution 4:[4]

This seems to be one of the few SO hits on PHP Startup: Unable to load dynamic library 'pdo_sqlite'. In my case, I don't actually use sqlite, but nonetheless see this error in my Apache logs.

The problem turned out to be a CGI script that was setting LD_LIBRARY_PATH (for unrelated reason) before calling PHP. This was somehow messing up PHP, possibly making it look in the specified LD_LIBRARY_PATH instead of the system paths. Unsetting LD_LIBRARY_PATH before calling PHP has fixed the problem.

Solution 5:[5]

I had the same, for me the issue was in /etc/php/7.2/apache2/php.ini the outcomment was removed so pdo_sqlite was loaded (or tried to) from there too.

Modules are now loaded from /etc/php/7.2/apache2/conf.d/

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 IncrediblePony
Solution 2
Solution 3 nur zazin
Solution 4 Maksym
Solution 5 Kim Lundberg Stegenborg Madsen