Я пытался установить php (7.2) в Ubuntu (16.04) с включенным PDO. Мне не нужен php как апачский модуль, потому что я хочу использовать встроенный сервер PHPs (в cli режиме, как php -S localhost:80
).
Так, вот то, что я делаю:
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
Теперь, в непрокомментированном php.ini:
extension=pdo_mysql
И все еще когда я работаю php -v
Я получаю ошибку:
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
вывод:
[PHP Modules]
Core
date
filter
hash
libxml
openssl
pcntl
pcre
Reflection
session
sodium
SPL
standard
zlib
[Zend Modules]
Я решил проблему этот путь:
sudo apt-get --purge remove php-common
sudo apt-get install php-common php-mysql php-cli
Теперь нет никакой ошибки и php -m
шоу это имеет все:
[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
Все еще не знайте то, что вызвало проблему во-первых
Я создал такую же проблему для себя в своем рабочем окне, вручную раскомментировав несколько
;extension=<module>
строк в php.ini
. На самом деле я усомнился в процессе apt-get install
. Я думаю, что современный php7+ обрабатывает эти расширения, используя специальные файлы conf.d
, такие как:
/etc/php/7.3/cli/conf.d/10-pdo.ini
/etc/php/ 7.3/cli/conf.d/20-pdo_mysql.ini
Тогда ответом для меня было повторное комментирование этих строк ;extension
в файле cli php.ini
.