Предупреждение PHP: запуск PHP: невозможно загрузить динамическую библиотеку pdo_mysql.so

Я выполнил команду:

php -v

Выход:

PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_mysql.so' (tried: /usr/lib/php/20170718/pdo_mysql.so (/usr/lib/php/20170718/pdo_mysql.so: undefined symbol: mysqlnd_allocator), /usr/lib/php/20170718/pdo_mysql.so.so (/usr/lib/php/20170718/pdo_mysql.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Я выполнил эту команду:

php -m

Выход:

PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_mysql.so' (tried: /usr/lib/php/20170718/pdo_mysql.so (/usr/lib/php/20170718/pdo_mysql.so: undefined symbol: mysqlnd_allocator), /usr/lib/php/20170718/pdo_mysql.so.so (/usr/lib/php/20170718/pdo_mysql.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
    [PHP Modules]
    bz2
    calendar
    Core
    ctype
    curl
    date
    dom
    exif
    fileinfo
    filter
    ftp
    gd
    gettext
    hash
    iconv
    intl
    json
    libxml
    mbstring
    openssl
    pcntl
    pcre
    PDO
    Phar
    posix
    readline
    Reflection
    session
    shmop
    SimpleXML
    soap
    sockets
    sodium
    SPL
    standard
    sysvmsg
    sysvsem
    sysvshm
    tokenizer
    wddx
    xml
    xmlreader
    xmlwriter
    xsl
    Zend OPcache
    zip
    zlib

    [Zend Modules]
    Zend OPcache

Файл php.ini содержит такую ​​строку:

extension=pdo_mysql

Выполните эту команду:

sudo apt-get install -y php-pdo-mysql

Ничего не устанавливается, потому что уже установлено.

Выполните эту команду:

php -i

Вывод показывает:

PDO

PDO support => enabled
PDO drivers =>

Не знаю, почему это так и что делать. Какие-либо предложения?


person flabbergasted    schedule 07.06.2020    source источник


Ответы (3)


Я решил проблему так:

sudo apt-get --purge remove php-common

sudo apt-get install php-common php-mysql php-cli

Теперь ошибки нет, и php -m показывает, что все есть:

person LogGurkha    schedule 03.11.2020
comment
Это помогло. В моем случае я просто заменил php- * на php7.4- *. - person jiv-e; 04.11.2020
comment
я просто заменил на sudo apt-get install php7.4-common php7.4-mysql php7.4-cli - person Suliman Farzat; 01.04.2021

Вероятно, вы используете php7.2, поэтому вам следует отредактировать файл php.ini (/etc/php/7.2/cli/php.ini ).

И, вероятно, extension = pdo_mysql в строке 906 раскомментирован. Прокомментируйте эту строку, добавив ; в начало строки.

После сохранения и закрытия php.ini ошибка должна исчезнуть, однако, чтобы изменения вступили в силу, перезапустите службу php:

$ sudo systemctl restart php7.2-fpm

person Thyago Ghelere    schedule 26.08.2020
comment
Это сработало для меня - person matynjr; 27.07.2021

Убедитесь, что расположение файла pdo_mysql.so совпадает с каталогом extension_dir PHP:

# php -i|grep extension_dir
# find / -name pdo_mysql.so

Сделав это и добавив абсолютный путь в php.ini следующим образом:

extension=/usr/lib/php/20190902/pdo_mysql

это будет работать.

person malkev    schedule 08.06.2020
comment
Для первой команды я получаю: extension_dir = ›/ usr / lib / php / 20170718 =› / usr / lib / php / 20170718, а для второй команды я получаю /usr/lib/php/20170718/pdo_mysql.so. Я полагаю, это означает, что он находится в правильном месте? - person flabbergasted; 09.06.2020
comment
Я решил проблему, следуя этому совету askubuntu.com/a/187278/885417 - person flabbergasted; 09.06.2020