【问题标题】:PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql.so'PHP 警告:PHP 启动:无法加载动态库 'pdo_mysql.so'
【发布时间】:2020-09-26 02:55:28
【问题描述】:

我运行了命令:

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 =>

不知道为什么会这样或该怎么做。有什么建议吗?

【问题讨论】:

    标签: php mysql pdo ubuntu-18.04 php-extension


    【解决方案1】:

    我是这样解决问题的:

    sudo apt-get --purge remove php-common

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

    现在没有错误,php -m 显示它拥有一切:

    【讨论】:

    • 这有帮助。就我而言,我只是用 php7.4-* 替换了 php-*。
    • 我刚刚替换为 sudo apt-get install php7.4-common php7.4-mysql php7.4-cli
    【解决方案2】:

    您可能正在使用 php7.2,因此您应该编辑 php.ini 文件 (/etc/php/7.2/cli/php.ini )。

    可能 extension=pdo_mysql906 行没有注释。通过在行首添加 ; 来注释此行。

    保存并关闭 php.ini 后错误应该会消失,但是,为确保更改生效,请重新启动 php 服务:

    $ sudo systemctl restart php7.2-fpm

    【讨论】:

      【解决方案3】:

      确保 pdo_mysql.so 文件的位置与 PHP extension_dir 相同:

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

      通过这样做,并像这样在 php.ini 上添加绝对路径:

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

      这会起作用。

      【讨论】:

      • 第一个命令我得到:extension_dir => /usr/lib/php/20170718 => /usr/lib/php/20170718 第二个命令我得到 /usr/lib/php/20170718/ pdo_mysql.so。我认为这意味着它位于正确的位置?
      • 我按照这个建议解决了这个问题askubuntu.com/a/187278/885417
      猜你喜欢
      • 2016-10-09
      • 2017-06-07
      • 1970-01-01
      • 2021-08-27
      相关资源
      最近更新 更多