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