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