I've been trying to install php (7.2) in Ubuntu (16.04) with PDO enabled. I don't need php as apache module, because I want to use PHPs built-in server (in cli mode, like php -S localhost:80).
So, here is what i do:
sudo apt-get install php
sudo apt-get install php-mysql
sudo cp /usr/lib/php/7.2/php.ini-production.cli /etc/php/7.2/cli/php.ini
Now, in php.ini uncommented:
extension=pdo_mysql
And still when i run php -v I get the error:
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/20170718/pdo_mysql (/usr/lib/php/20170718/pdo_mysql: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_mysql.so (/usr/lib/php/20170718/pdo_mysql.so: undefined symbol: pdo_parse_params)) in Unknown on line 0php -m output:
[PHP Modules]
Core
date
filter
hash
libxml
openssl
pcntl
pcre
Reflection
session
sodium
SPL
standard
zlib
[Zend Modules] 8 2 Answers
I solved the problem this way:
sudo apt-get --purge remove php-common
sudo apt-get install php-common php-mysql php-cli
Now there is no error and php -m shows it has everything:
[PHP Modules]
calendar
Core
ctype
date
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
Zend OPcache
zlib
[Zend Modules]
Zend OPcacheStill don't know what caused the issue in the first place
7I created the same issue for myself on my work box by manually uncommenting several
;extension=<module>lines in the php.ini. Which was really me second-guessing the apt-get install process. I think modern php7+ handles these extensions using conf.d specific files like:
/etc/php/7.3/cli/conf.d/10-pdo.ini/etc/php/7.3/cli/conf.d/20-pdo_mysql.ini
The answer then for me was re-commenting these ;extension lines in the cli's php.ini file.