mysql установка - PHP Неустранимая ошибка: класс PDO не найден





cakephp docs (8)


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

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

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

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

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




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

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




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

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

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



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

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

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




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




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




пытаться

 yum install php-pdo
 yum install php-pdo_mysql

 service httpd restart



Хотя это может быть официально не ошибкой, на мой взгляд, это так. Я думаю, что проблема здесь в том, что мы ожидаем, что $item выйдет из области действия, когда цикл будет завершен, как и во многих других языках программирования. Однако, похоже, это не так ...

Этот код ...

$arr = array('one', 'two', 'three');
foreach($arr as $item){
    echo "$item\n";
}    
echo $item;

Дает результат ...

one
two
three
three

Как уже говорили другие люди, вы переписываете ссылочную переменную в $arr[2] вторым циклом, но это происходит только потому, что $item никогда не выходил за рамки. Что вы, ребята, думаете ... ошибка?







php mysql cakephp web-applications