php 不能加载 gd.so,php - PHP5中的错误..无法加载动态库

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

13个解决方案

136 votes

尽管其他几个答案表明,安装更多不必要的软件通常不是最佳解决方案。 相反,你应该解决潜在的问题。 这些消息出现的原因是您尝试加载这些扩展,但它们未安装。 所以简单的解决方案就是告诉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的默认安装,所以希望这有助于其他人。

Mike answered 2019-06-09T10:53:17Z

46 votes

sudo apt-get install php5-mcrypt

sudo apt-get install php5-mysql

...等为我解决了:)

希望能帮助到你

user1568807 answered 2019-06-09T10:53:59Z

13 votes

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

dimcha answered 2019-06-09T10:54:31Z

10 votes

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

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

ls -l /usr/lib/php5

应该有一个类似于旧的目录/etc/php5/cli/conf.d/.在我的情况下,它现在是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

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

ruuter answered 2019-06-09T10:56:40Z

6 votes

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

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

使用purge参数卸载php:

sudo apt-get --purge remove php5-common

然后重新安装:

sudo apt-get install php5 php5-mysql

José Ayrám answered 2019-06-09T10:58:20Z

3 votes

如果你使用的是5.6 php,

sudo apt-get install php5.6-curl

Amjith answered 2019-06-09T10:59:01Z

2 votes

我的问题通过以下命令解决了

sudo apt-get install php5-mcrypt

我有

PHP 5.3.10-1ubuntu3.4与Suhosin-Patch(cli)

Ubuntu Desktop 12.04

Mysql 5.5

GP Das answered 2019-06-09T10:59:58Z

2 votes

我在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

Edwin Yip answered 2019-06-09T11:00:32Z

0 votes

不知怎的,sudo apt-get install --reinstall php5-gmp文件似乎已从我的系统中删除。 这就是为我解决的问题:

sudo apt-get install --reinstall php5-gmp

Hans-Christoph Steiner answered 2019-06-09T11:01:12Z

0 votes

好吧,对于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,就是这样,警告消失了,现在扩展已正确安装。 它可能看起来有点脏,但它有效!

DanielRestrepo answered 2019-06-09T11:01:53Z

0 votes

我通过取消注释启用了php.ini中的extension_dir,

extension_dir = "ext"

extension=phpchartdir550.dll

并将phpchartdir550 dll复制到extension_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中的extension_dir(这可以通过phpinfo()看到)然后在php.ini中提供库的完整路径,

; extension=/path/to/extension/msql.so

extension=/usr/lib/php5/20121212/phpchartdir550.dll

重启apache:sudo service apache2 restart

即使其他.so存在于同一目录中,也只能选择性地加载所需的.so。

NBhat answered 2019-06-09T11:03:20Z

0 votes

我有一个类似的问题,这导致我在这里:

$ 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文件,将extension = profiler.so更改为extension = uprofiler.so ....结果,愉快地:

$ phpunit --version

PHPUnit 5.7.17 by Sebastian Bergmann and contributors.

即没有更多的警告。

owenmck answered 2019-06-09T11:04:29Z

-1 votes

试试这个:

打开php.ini

路径:etc / php5 / cli / php.ini

删除或评论:extension = ssh2.so然后保存。

Indrajeet Singh answered 2019-06-09T11:05:23Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值