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

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
267162 次浏览
sudo apt-get install php5-mcrypt
sudo apt-get install php5-mysql

等等为我解决了这个问题:)

希望能有所帮助

下面的命令解决了我的问题

sudo apt-get install php5-mcrypt

是的

  • PHP 5.3.10-1ubuntu3.4与 Suhosin-Patch (cli)
  • Ubuntu 桌面12.04
  • Mysql 5.5

查看/etc/php5/cli/config.d/并删除相应的 * . ini 文件。

尽管其他几个答案也表明了这一点,但安装更多不必要的软件通常是 没有的最佳解决方案。相反,您应该解决根本的问题。出现这些消息的原因是您正在尝试加载这些扩展,但它们没有安装。因此,简单的解决方案就是告诉 PHP 停止加载它们:

首先,找出哪些文件试图加载上述扩展:

$ grep -Hrv ";" /etc/php5 | grep -E "extension(\s+)?="

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

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

不知怎么的,gmp.so文件似乎已经从我的系统中删除了。这就是为我修复它的原因:

sudo apt-get install --reinstall php5-gmp

如果放置; 符号,则此操作将使扩展名不活动。

我也遇到了同样的问题,于是我做了以下几件事:

  1. 卸载带有 purge 参数的 php:

    sudo apt-get --purge remove php5-common
    
  2. And install again:

    sudo apt-get install php5 php5-mysql
    

我通过 Blog.tordeu.com找到了这个溶液

sudo aptitude purge php5-suhosin

我不确定,但似乎不再需要 suhosin了,它适用于我的 PHP 版本:

PHP 5.4.34-1+deb.sury.org~lucid+1 (cli) (built: Oct 17 2014 15:26:51)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

对于 Ubuntu 14.04,我只是为 mcrypt 得到了这个错误:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/mcrypt.ini' - /usr/lib/php5/20121212/mcrypt.ini: cannot open shared object file: No such file or directory in Unknown on line 0

如果仔细查看错误,就会发现 php 在该位置查找的是 mcrypt.ini,而不是 mcrypt.so。我只是将 mcrypt.so 复制到 mcrypt.ini,就这样,警告消失了,扩展现在已经正确安装。它可能看起来有点脏,但它的工作!

似乎你的 升级了 PHP到新的版本和旧的。 ini 文件仍然指向旧的位置。

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

ls -l /usr/lib/php5

应该有一个类似于旧 20090626的目录。在我的例子中,现在是 20131226

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

编辑一下。Ini 文件哪个模块给你一个错误。例如,如果错误是针对 mcrypt 模块的:

sudo vi /etc/php5/cli/conf.d/20-mcrypt.ini

换句话说:

extension=/usr/lib/php5/20090626/mcrypt.so

反映.so 文件的新路径。在我的例子中,正确的路径应该是:

extension=/usr/lib/php5/20131226/mcrypt.so

就是这样! 错误消失了。通信办公室必须在每个模块给出错误时执行。

我通过取消注释,在 php.ini 中启用了扩展名 _ dir,

  extension_dir = "ext"
extension=phpchartdir550.dll

并将 phpchartdir550dll 复制到扩展名 _ dir (/usr/lib/php5/20121212) ,会导致同样的错误。

  PHP Warning:  PHP Startup: Unable to load dynamic library 'ext/phpchartdir550.dll' - ext/phpchartdir550.dll: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'ext/pdo.so' - ext/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 'ext/gd.so' - ext/gd.so: cannot open shared object file: No such file or directory in Unknown on line 0

正如@Mike 所指出的,在应用程序中实际上并不需要安装所有这些东西时,没有必要安装它们。

更简单的方法是提供将库复制到正确位置后要加载的扩展的完整路径。

将 phpchartdir550.dll 复制到/usr/lib/php5/20121212,这是我的 Ubuntu 14.04中的扩展名 _ dir (可以使用 phpinfo ()查看) 然后在 php.ini 中提供到库的完整路径,

;   extension=/path/to/extension/msql.so
extension=/usr/lib/php5/20121212/phpchartdir550.dll

重新启动 apache: sudo service apache2重新启动

即使 other. so 在同一个目录中,也只能有选择地加载所需的那些。

如果您使用的是5.6 php,

Sudo apt-get install php5.6-curl

我也有过类似的问题,所以我来到了这里:

$ phpunit --version
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20131226/profiler.so' - /usr/lib/php5/20131226/profiler.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHPUnit 5.7.17 by Sebastian Bergmann and contributors.

与上述不同,安装软件并没有解决我的问题,因为我已经有了它。

$ sudo apt-get install php5-uprofiler
Reading package lists... Done
Building dependency tree
Reading state information... Done
php5-uprofiler is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 52 not upgraded.

我通过 Debian Bug 报告日志找到了我的解决方案

$ sudo vim /etc/php5/mods-available/uprofiler.ini

我编辑了 ini 文件,把 扩展名 = profiler.so改成了 所以... ... 结果,令人高兴的是:

$ phpunit --version
PHPUnit 5.7.17 by Sebastian Bergmann and contributors.

也就是说,没有更多的警告。

(Ubuntu 用户)

我也有同样的问题,但是上面的答案都没有解决这个问题。下面是我如何解决这个问题的。

打开您的 php.ini文件(我的文件在 /etc/php/7.3/cli/php.ini中)。

你可能有这样的东西:

extension=pdo_mysql

或者也许:

extension=/here/is/the/path/to/your/file/pdo_mysql.so

extension=pdo_mysql之前添加以下行

extension=pdo

所以,你会得到:

extension=pdo
extension=pdo_mysql

看起来问题在于(至少在我的例子中)我们需要首先加载 pdo扩展来加载 pdo_mysql扩展。

希望能帮上忙!