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
файл для изменения настроек; вместо этого вы можете:
.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 искать глобальный класс, а не искать в локальном пространстве имен.
У меня была такая же проблема на GoDaddy. Я добавил extension=pdo.so
в php.ini
до сих пор не работает. И только одна вещь пришла мне в голову: права доступа
Перед загрузкой файла убейте все процессы PHP (cPanel-> Процессы PHP).
Проблема заключалась в том, что с права доступа к файлу, было установлено 0644
и не был исполняемым. Вам нужно установить разрешение файла как минимум 0755
,
Я решил это с библиотекой PHP_PDO , потому что мой хостинг-провайдер не принял мое требование для установки драйвера PDO на сервер apache.
Эта ошибка вызвана PDO
недоступно для PHP.
Если вы получаете сообщение об ошибке в командной строке или не через тот же интерфейс, который ваш веб-сайт использует для PHP, вы потенциально вызываете другую версию PHP или выдвигаете другую php.ini
файл конфигурации при проверке phpinfo()
,
Убедитесь, что PDO загружен, и драйверы PDO для вашей базы данных также загружены.