PHP with pdo-mysql in ubuntu 16.04

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]
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 OPcache

Still don't know what caused the issue in the first place

7

I 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.

You Might Also Like