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 0 php -m output:
[PHP Modules] Core date filter hash libxml openssl pcntl pcre Reflection session sodium SPL standard zlib [Zend Modules] 82 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 OPcache Still 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.