PHP启动:无法加载PHP文件夹的动态库。

6

我已经参考了链接 PHP5类似问题,并尝试了所有相关解决方案,但仍然遇到以下问题。感谢任何帮助。谢谢!

PHP警告:PHP启动时无法加载动态库'/usr/lib/php/20131226/msql.so' - /usr/lib/php/20131226/msql.so:找不到共享对象文件:Unknown on line 0 PHP警告:PHP启动时无法加载动态库'/usr/lib/php/20131226/php_pdo_mysql.dll' - /usr/lib/php/20131226/php_pdo_mysql.dll:找不到共享对象文件:Unknown on line 0 PHP 5.6.38-3+ubuntu14.04.1+deb.sury.org+1(cli) 版权所有(c)1997-2016 PHP Group Zend Engine v2.6.0,版权所有(c)1998-2016 Zend Technologies 带有Zend OPcache v7.0.6-dev,版权所有(c)1999-2016,由Zend Technologies提供


我已经执行了两个命令,apt-get install php5.6-mysql和sudo phpenmod pdo_mysql,然后重启了。问题仍旧存在。 - Azhar Bandri
您可以通过使用phpinfo()或在终端中运行php -i | grep pdo来确认它。 - 113408
它有 /20-pdo_mysql.ini 文件。那么它已经安装好了吗? - Azhar Bandri
运行 find /usr/lib/php/ | pastebinit,你会得到什么? - hanshenrik
http://paste.ubuntu.com/p/KR4qqPknHS/ - Azhar Bandri
显示剩余2条评论
1个回答

2
您的php.ini配置文件引用了几个不存在的文件,例如/usr/lib/php/20131226/php_pdo_mysql.dll,您的PHP安装已经损坏。重新安装PHP可能更容易,但如果您想手动修复它,请创建一个名为phpinfo.php的页面,并将其包含在其中。
<?php phpinfo(~0);

如果在浏览器中打开它,您将获得php.ini的位置以及解析的其他ini配置文件列表。一旦您拥有了这些信息,请扫描php.ini文件和所有其他配置文件,并删除所有不存在的文件的引用。例如,在此截图中:

enter image description here


在这里,您需要扫描文件/etc/php/7.0/fpm/php.ini/etc/php/7.0/fpm/conf.d/10-mysqlnd.ini/etc/php/7.0/fpm/conf.d/10-opcache.ini/etc/php/7.0/fpm/conf.d/10-pdo.ini/etc/php/7.0/fpm/conf.d/15-xml.ini/etc/php/7.0/fpm/conf.d/20-calendar.ini/etc/php/7.0/fpm/conf.d/20-ctype.ini/etc/php/7.0/fpm/conf.d/20-curl.ini/etc/php/7.0/fpm/conf.d/20-dom.ini/etc/php/7.0/fpm/conf.d/20-exif.ini/etc/php/7.0/fpm/conf.d/20-fileinfo.ini/etc/php/7.0/fpm/conf.d/20-ftp.ini/etc/php/7.0/fpm/conf.d/20-gd.ini/etc/php/7.0/fpm/conf.d/20-gettext.ini/etc/php/7.0/fpm/conf.d/20-iconv.ini/etc/php/7.0/fpm/conf.d/20-json.ini/etc/php/7.0/fpm/conf.d/20-mbstring.ini/etc/php/7.0/fpm/conf.d/20-mysqli.ini/etc/php/7.0/fpm/conf.d/20-pdo_mysql.ini/etc/php/7.0/fpm/conf.d/20-pdo_sqlite.ini/etc/php/7.0/fpm/conf.d/20-phar.ini/etc/php/7.0/fpm/conf.d/20-posix.ini/etc/php/7.0/fpm/conf.d/20-readline.ini/etc/php/7.0/fpm/conf.d/20-shmop.ini/etc/php/7.0/fpm/conf.d/20-simplexml.ini/etc/php/7.0/fpm/conf.d/20-sockets.ini/etc/php/7.0/fpm/conf.d/20-sqlite3.ini/etc/php/7.0/fpm/conf.d/20-ssh2.ini/etc/php/7.0/fpm/conf.d/20-sysvmsg.ini/etc/php/7.0/fpm/conf.d/20-sysvsem.ini/etc/php/7.0/fpm/conf.d/20-sysvshm.ini/etc/php/7.0/fpm/conf.d/20-tokenizer.ini/etc/php/7.0/fpm/conf.d/20-wddx.ini/etc/php/7.0/fpm/conf.d/20-xdebug.ini/etc/php/7.0/fpm/conf.d/20-xmlreader.ini/etc/php/7.0/fpm/conf.d/20-xmlwriter.ini/etc/php/7.0/fpm/conf.d/20-xsl.ini,检查不存在的文件的引用,并删除这些引用...祝您好运。
“但是说真的,你最好重新安装所需版本的PHP。从你的评论中可以看出,你已经安装了多个版本的PHP。”

我过去遇到了一些缺失的库,但这并没有阻止我的应用程序正常工作。 - 113408
phpinfo(~0);phpinfo();之间有什么区别? - abdul rashid
@113408 嗯,有些库可以不用,但许多 PHP 代码库在无法加载 php_pdo_mysql.dll 时将停止工作,这可能会使 new PDO() 停止工作,至少如果您正在尝试连接到 MySQL 或 MariaDB 数据库。 - hanshenrik
1
@abdulrashid 可能很少,phpinfo()的参数是一堆位标志,用于决定要显示哪些信息,而~0则启用了每个可能的标志。(在x86-cpus上,使用-1也会启用每个可能的标志,但我不知道这是否适用于其他cpu),但这可能并不需要,因为默认参数(现在至少是这样吗?)是INFO_ALL,它也应该打印所有可能的信息。 - hanshenrik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接