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 для вашей базы данных.