PHP5中的错误..无法加载动态库

use*_*283 71 php

root@ip-10-131-9-200:/etc/php5/apache2# php -a
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/curl.so' - /usr/lib/php5/20090626+lfs/curl.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mcrypt.so' - /usr/lib/php5/20090626+lfs/mcrypt.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysql.so' - /usr/lib/php5/20090626+lfs/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysqli.so' - /usr/lib/php5/20090626+lfs/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/pdo.so' - /usr/lib/php5/20090626+lfs/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/pdo_mysql.so' - /usr/lib/php5/20090626+lfs/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
Interactive shell
Run Code Online (Sandbox Code Playgroud)

Mik*_*ike 139

尽管其他几个答案表明,安装更多不必要的软件通常不是最佳解决方案.相反,你应该解决潜在的问题.这些消息出现的原因是您尝试加载这些扩展,但它们未安装.所以简单的解决方案就是告诉PHP停止尝试加载它们:

首先,找出哪些文件正在尝试加载上述扩展名:

$ grep -Hrv ";" /etc/php5 | grep -E "extension(\s+)?="
Run Code Online (Sandbox Code Playgroud)

Ubuntu的输出示例:

/etc/php5/mods-available/gd.ini:extension=gd.so
/etc/php5/mods-available/pdo_sqlite.ini:extension=pdo_sqlite.so
/etc/php5/mods-available/pdo.ini:extension=pdo.so
/etc/php5/mods-available/pdo_mysql.ini:extension=pdo_mysql.so
/etc/php5/mods-available/mysqli.ini:extension=mysqli.so
/etc/php5/mods-available/mysql.ini:extension=mysql.so
/etc/php5/mods-available/curl.ini:extension=curl.so
/etc/php5/mods-available/sqlite3.ini:extension=sqlite3.so
/etc/php5/conf.d/mcrypt.ini:extension=mcrypt.so
/etc/php5/conf.d/imagick.ini:extension=imagick.so
/etc/php5/apache2/php.ini:extension=http.so
Run Code Online (Sandbox Code Playgroud)

现在只需找到正在加载导致错误的扩展名的文件,并用a注释掉那些行;.由于某些原因,我发现Ubuntu的默认安装,所以希望这有助于其他人.

  • 在从Debian 6.x到7.1的dist-upgrade之后我遇到了同样的错误.我不知道`suhosin`和`idn`模块在这个新的软件包中被删除了..对于好的`grep`行来说这么大. (4认同)

小智 47

sudo apt-get install php5-mcrypt
sudo apt-get install php5-mysql
Run Code Online (Sandbox Code Playgroud)

...等为我解决了:)

希望能帮助到你


小智 13

查看/etc/php5/cli/conf.d/并删除相应的*.ini文件.当您删除一些不太干净的PHP包时会发生此错误.


ruu*_*ter 11

似乎您将PHP升级到较新版本,旧的.ini文件仍然指向旧位置.

解决方案:找出现在模块的位置

ls -l /usr/lib/php5
Run Code Online (Sandbox Code Playgroud)

应该有一个类似于旧的目录20090626.就我而言,现在是20131226

给出错误的.ini文件位于 /etc/php5/cli/conf.d/

只需编辑那些模块给你错误的.ini文件.例如,如果错误是针对mcrypt模块:

sudo vi /etc/php5/cli/conf.d/20-mcrypt.ini
Run Code Online (Sandbox Code Playgroud)

换行:

extension=/usr/lib/php5/20090626/mcrypt.so
Run Code Online (Sandbox Code Playgroud)

反映.so文件的新路径.在我的情况下,正确的路径应该是:

extension=/usr/lib/php5/20131226/mcrypt.so
Run Code Online (Sandbox Code Playgroud)

而已!错误消失了.对于每个模块,你必须这样做,给你一个错误.


Jos*_*rám 6

如果你把; 符号,此操作无效扩展.

我有同样的问题并做了以下事情:

  1. 使用purge参数卸载php:

    sudo apt-get --purge remove php5-common
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后重新安装:

    sudo apt-get install php5 php5-mysql
    
    Run Code Online (Sandbox Code Playgroud)