Страница 1 из 1

Fatal error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

Добавлено: 04 ноя 2012, 17:35
molottt
вообщем что-то с модулем PDO. код для теста:

<?php
define('HOSTNAME', 'localhost');
define('DATABASE', 'base');
define('USERNAME', 'login');
define('PASSWORD', 'pass');

try {
$db = new PDO('mysql:host=' . HOSTNAME . ';dbname=' . DATABASE, USERNAME, PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); (на этой строке вылет! ошибка ниже)
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
exit($e->getMessage());
}
?>

текст ошибки:
Fatal error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in E:\openserver\domains\test\test.php on line 7

в php.ini модуль подключен
extension=php_pdo_mysql.dll

Добавлено: 04 ноя 2012, 18:05
Максим
Проверил ваш код на последней версии Open Server со всеми модулями PHP - нигде ошибки не возникает. Так что ищите проблему у себя.

Добавлено: 04 ноя 2012, 19:17
molottt
ой. забыл сказать. в cli-режиме. в браузере то все нормально.

http://imglink.ru/show-image.php?id=549 ... 4ef8b14906

Добавлено спустя 12 минут 38 секунд:
а если из строки:
$db = new PDO('mysql:host=' . HOSTNAME . ';dbname=' . DATABASE, USERNAME, PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

убрать константу, вот так:
$db = new PDO('mysql:host=' . HOSTNAME . ';dbname=' . DATABASE, USERNAME, PASSWORD);

то ошибка вот такая:
could not find driver

я грешным делом подумал что для cli другой ini-файл конфига. но вроде нет.

Добавлено: 04 ноя 2012, 19:59
Максим
Да вы похоже даже не указываете путь до php.ini при вызове php из командной строки. Так же учитывайте что сервер должен быть запущен.

Добавлено: 04 ноя 2012, 20:33
molottt
да вроде все указываю. это нетбинс.
http://imglink.ru/show-image.php?id=669 ... de336fa35b

я на нетбинсе работаю 3 года. на твоем опенсервере работаю почти год. проблем не было.

Добавлено: 04 ноя 2012, 21:20
Максим
Судя по вашему скриншоту, вы ничего не указываете. Я вам уже сказал, нужно указывать путь до php.ini, а ошибка возникает потому что расширение php_pdo_mysql.dll не подключено из-за отсутствия php.ini