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, что он ищет глобальный класс, а не ищет в локальном пространстве имен.
Я решил это с помощью библиотеки 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 для вашей базы данных.