pdo mysql.so不存在_mysql-PHP致命错误:找不到类“ PDO”

当在PHP中遇到'PDO'类未找到的错误时,通常是因为PDO扩展未正确安装或配置。检查php.ini文件,确保已启用extension=pdo.so等相关扩展,并重启Web服务器。如果使用的是php-fpm,别忘了重启php-fpm服务。此外,注意命名空间可能导致的冲突,确保全局类的正确引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql-PHP致命错误:找不到类“ PDO”

PHP Fatal error: Class 'PDO' not found in /home/bd/public_html/app/webroot/Cake/Model/Datasource/Database/Mysql.php on line 177

PHP信息:

PDO

PDO support => enabled

PDO drivers => sqlite, sqlite2, mysql

pdo_mysql

PDO Driver for MySQL => enabled

Client API version => 5.5.24

Directive => Local Value => Master Value

pdo_mysql.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock

pdo_sqlite

PDO Driver for SQLite 3.x => enabled

SQLite Library => 3.7.7.1

此PHP:

extension=pdo.so

extension=pdo_sqlite.so

extension=sqlite.so

extension=pdo_mysql.so

码:

/**

* Check whether the MySQL extension is installed/loaded

*

* @return boolean

*/

public function enabled() {

return in_array('mysql', PDO::getAvailableDrivers());

}

关于为什么出现此错误的想法?

PHP 5.3.15CloudLinux / CentOS 6面板

10个解决方案

60 votes

尝试

yum install php-pdo

yum install php-pdo_mysql

service httpd restart

Bảo Nam answered 2020-06-26T09:20:43Z

46 votes

尝试在名称空间之后,类之前或PHP文件顶部添加use PDO;。

Jo Smo answered 2020-06-26T09:21:03Z

21 votes

如果Web应用程序的当前工作目录中有.user.ini文件,也会发生这种情况。 如果已放置一个以更改某些设置,它将覆盖全局设置。

为避免此问题,请不要使用.user.ini文件更改设置。 相反,您可以:

在vhost声明中指定设置

将.user.ini文件与php_flag结合使用(请参见此处)

使用.user.ini文件(请参见此处)

Alastair Irvine answered 2020-06-26T09:21:41Z

12 votes

确保在php.ini文件中调用了它们

如果PDO显示在当前安装的php模块列表中,则需要检查相关文件夹中的php.ini文件,以确保它们被调用。 在php.ini文件中的某个位置,您应该看到以下内容:

extension=pdo.so

extension=pdo_sqlite.so

extension=pdo_mysql.so

extension=sqlite.so

如果不存在,只需将上面的行添加到php.ini文件的底部并保存。

Bruno Ribeiro answered 2020-06-26T09:22:10Z

9 votes

文件Mysql.php的完整来源是什么。根据php info列表的输出,听起来您可能正在尝试从名称空间中引用全局类。

如果文件Mysql.php中有一个语句“ namespace”,请使用\PDO代替PDO-这将告诉PHP寻找全局类,而不是在本地命名空间中。

Stephen answered 2020-06-26T09:22:35Z

3 votes

我在GoDaddy遇到了同样的问题。 我将0644添加到了0755,但还是没用。 然后我想到的只有一件事:权限

在上传文件之前,请杀死所有PHP进程(cPanel-> PHP进程)。

问题在于,有了文件许可权,它被设置为0644,并且无法执行。 您需要设置文件许可权至少为0755。

mgVy4.png

Rust answered 2020-06-26T09:23:04Z

1 votes

我使用库PHP_PDO解决了该问题,因为托管服务提供商不接受将PDO驱动程序安装到apache服务器的要求。

Pavel Hájek answered 2020-06-26T09:23:25Z

1 votes

您可以通过执行以下命令找出已加载的配置文件,

php -i | grep 'php.ini'

然后添加以下行以更正php.ini文件

extension=pdo.so

extension=pdo_sqlite.so

extension=pdo_mysql.so

extension=sqlite.so

然后重新启动Web服务器,

service httpd restart

Hasitha answered 2020-06-26T09:23:53Z

0 votes

此错误是由php.ini无法用于PHP引起的。

如果在命令行中遇到错误,或者不是通过网站用于PHP的同一界面收到错误,则可能是在检查phpinfo()时调用了不同版本的PHP,或使用了不同的php.ini配置文件。

确保已加载PDO,并且还加载了数据库的PDO驱动程序。

Predominant answered 2020-06-26T09:24:22Z

0 votes

如果您使用php-fpm模块运行php,请不要忘记运行命令systemctl restart php-fpm!这将重新加载php-fpm模块。

user10965860 answered 2020-06-26T09:24:43Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值