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 INFO:

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 INI:

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.15
CloudLinux / CentOS 6
CPanel

42

Решение

пытаться

 yum install php-pdo
yum install php-pdo_mysql

service httpd restart
55

Другие решения

Попробуйте добавить use PDO; после вашего пространства имен или непосредственно перед вашим классом или в верхней части вашего PHP файл.

44

Это также может произойти, если есть php.ini файл в текущем рабочем каталоге веб-приложения. Если кто-то был помещен туда для изменения определенных настроек, он переопределит глобальный.

Чтобы избежать этой проблемы, не используйте php.ini файл для изменения настроек; вместо этого вы можете:

21

Убедитесь, что они вызываются в файле php.ini

Если PDO отображается в списке установленных в настоящее время модулей php, вам нужно проверить файл php.ini в соответствующей папке, чтобы убедиться, что он вызывается. Где-то в файле php.ini вы должны увидеть следующее:

extension=pdo.so
extension=pdo_sqlite.so
extension=pdo_mysql.so
extension=sqlite.so

Если их нет, просто добавьте строки выше в конец файла php.ini и сохраните его.

11

Каков полный источник файла Mysql.php, Судя по выводу списка информации php, вы можете пытаться ссылаться на глобальный класс из пространства имен.

Если файл Mysql.php имеет выражение «пространство имен», используйте \PDO на месте PDO — это скажет PHP искать глобальный класс, а не искать в локальном пространстве имен.

9

У меня была такая же проблема на GoDaddy. Я добавил extension=pdo.so в php.iniдо сих пор не работает. И только одна вещь пришла мне в голову: права доступа

Перед загрузкой файла убейте все процессы PHP (cPanel-> Процессы PHP).

Проблема заключалась в том, что с права доступа к файлу, было установлено 0644 и не был исполняемым. Вам нужно установить разрешение файла как минимум 0755,

права доступа

2

Я решил это с библиотекой PHP_PDO , потому что мой хостинг-провайдер не принял мое требование для установки драйвера PDO на сервер apache.

1

Эта ошибка вызвана PDO недоступно для PHP.

Если вы получаете сообщение об ошибке в командной строке или не через тот же интерфейс, который ваш веб-сайт использует для PHP, вы потенциально вызываете другую версию PHP или выдвигаете другую php.ini файл конфигурации при проверке phpinfo(),

Убедитесь, что PDO загружен, и драйверы PDO для вашей базы данных также загружены.

0
По вопросам рекламы [email protected]