Подтвердить что ты не робот

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

CODE:

/**
 * 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

4b9b3361

Ответ 1

попробовать

 yum install php-pdo
 yum install php-pdo_mysql

 service httpd restart

Ответ 2

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

Ответ 3

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

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

  • Укажите настройки в объявлении vhost
  • Используйте .htaccess файл с php_flag (см. здесь)
  • Используйте файл .user.ini (см. здесь)

Ответ 4

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

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

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

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

Ответ 5

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

Если в файле Mysql.php имеется оператор "namespace", используйте \PDO вместо PDO - это скажет PHP, что он ищет глобальный класс, а не ищет в локальном пространстве имен.

Ответ 6

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

Ответ 7

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

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

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

Разрешения

Ответ 8

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

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

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

Ответ 9

Если вы запускаете php с модулем php-fpm, не забудьте запустить команду systemctl restart php-fpm! Это перезагрузит модуль php-fpm.