Это действительно глючит меня сейчас, все д&Я прочитал не исправить мою проблему. Я прочитал в руководстве php, что PDO «драйвер включен по умолчанию в PHP 5.1.0». У меня есть php 5.5.18.
php_info () показывает:
PDO Driver for MySQL enabled
Я использую Fedora, и:
yum install php-pdo
ГВСИ:
php-pdo-5.5.19-3.fc20.x86_64 already installed and latest version
Некоторый код
$dsn = '
mysql:host=' . MY_HOST . '
;dbname=' . MY_DB . '
;charset=utf8;"';
$user = MY_USER;
$password = MY_PASS;try {
$this->_dbh = new PDO($dsn, $user, $password);
$this->_dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
Это дает мне:
Connection failed: could not find driver
Вы перезапустили веб-сервер?
когда вы выпускаете
yum install php-pdo
и это дает
php-pdo-5.5.19-3.fc20.x86_64 already installed and latest version
это хорошо и модно, но вам нужно выдать:
служба sudo httpd остановка / запуск или перезапуск или sudo /etc/init.d/httpd остановка / запуск перезапуск
загрузить расширение на веб-сервер apache, в противном случае, независимо от того, что вы делаете с ним, оно не будет работать. драйвер включен, но вам нужно выполнить перезагрузку веб-сервера, чтобы загрузить расширение!
У меня были разрывы строк в моей строке DSN, я думаю, что это была проблема.
Я изменил это на:
$host = MY_HOST;
$db = MY_DB;
$user = MY_USER;
$password = MY_PASS;
try {
$this->_dbh = new PDO(
"mysql:host=$host;dbname=$db;charset=utf8;",
$user,
$password
);
} catch (PDOException $e) {
printf(
'Connection failed: %s<br>',
$e->getMessage()
);
}