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

пытаться

  yum install php-pdo yum install php-pdo_mysql service httpd restart 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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