错误在PHP5 ..无法加载dynamic库
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
即使其他几个答案显示,安装更多不必要的软件通常也不是最好的解决scheme。 相反,你应该修复潜在的问题。 这些消息出现的原因是因为您正在尝试加载这些扩展名,但未安装。 所以简单的解决办法就是告诉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
现在只需find正在加载导致错误的扩展名的文件,并用a ;
注释掉那些行;
。 出于某种原因,这发生在我的默认安装的Ubuntu,所以希望这可以帮助别人。
sudo apt-get install php5-mcrypt sudo apt-get install php5-mysql
…等解决了我的:)
希望能帮助到你
看/etc/php5/cli/conf.d/并删除相应的* .ini文件。 这个错误发生在你删除一些不太干净的php包时。
看起来像你升级到新版本的PHP和旧的.ini文件仍然指向旧的位置。
解决scheme :找出现在模块的位置
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文件的新path。 在我的情况下,正确的道路应该是:
extension=/usr/lib/php5/20131226/mcrypt.so
而已! 错误消失了。 Ofc你必须做每个模块给你一个错误。
如果你把这个; 符号,这个动作无效的扩展。
我有同样的问题,并做了以下几点:
-
用purge参数卸载php:
sudo apt-get --purge remove php5-common
-
并再次安装:
sudo apt-get install php5 php5-mysql
我通过blog.tordeu.comfind了这个解决scheme
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
如果你使用的是5.6 php,
sudo apt-get install php5.6-curl
我的问题是通过以下命令解决的
sudo apt-get install php5-mcrypt
我有
- 带Suhosin-Patch(cli)的PHP 5.3.10-1ubuntu3.4
- Ubuntu桌面12.04
- Mysql 5.5
不知何故gmp.so
文件似乎已经从我的系统中删除。 这是对我来说固定的:
sudo apt-get install --reinstall php5-gmp
尝试这个:
- 打开php.ini
- path:etc / php5 / cli / php.ini
- 删除或注释:extension = ssh2.so然后保存。
那么对于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中启用了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所指出的那样,没有必要在应用程序中实际不需要安装所有的东西。
更简单的方法是在将库复制到正确的位置之后提供要加载的扩展的完整path。
复制phpchartdir550.dll到/ usr / lib / php5 / 20121212,这是在我的Ubuntu 14.04(这可以看到使用phpinfo())extension_dir,然后提供完整的path在php.ini库,
; extension=/path/to/extension/msql.so extension=/usr/lib/php5/20121212/phpchartdir550.dll
重启apache:sudo service apache2 restart
即使其他.so是存在于同一个目录中,只有需要的可以有select地加载。
我有一个类似的问题,这导致我在这里:
$ 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报告日志find了我的解决scheme
$ 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.
即没有更多的警告。