2016-06-17 4 views
0

Я установил PHP на IIS7 после официальной документации PHP, и это успешно. Я могу запускать файлы PHP, и мой сайт в порядке. Но я не могу подключиться к своей базе данных на MSSQL с драйверами PDO и ODBC. Я настроил свой php.ini осторожно, и я думаю, что все хорошо. Более того, я также считаю, что ODBC является родным для Windows, а PDO включен в последние версии PHP (мой - 5.5.36).PHP PDO ODBC MSSQL соединение

Так вот мой код подключения:

define("UID", 'uid'); 
define("PWD", 'pwd'); 
define("DSN", 'odbc:decheterie'); 
// where 'decheterie' is the dataSource set in the ODBC Connection Manager 

try { 
    $pdo = new PDO(DSN, UID, PWD); 
} catch (PDOException $e) { 
    die("Error! ".$e->getMessage()); 
} 

Ошибки я получаю:

Ошибка! Не удалось найти драйвер

Если я запустил php -m, я вижу, что модули PDO и ODBC правильно загружены. Но a PDO::getAvailableDrivers() возвращает пустой массив, и он может быть проверен в пределах phpinfo(), который отображает «no value» в разделе «PDO drivers».

Я прочитал много сообщений и статей, и каждый раз, когда ответ валиден, как «решение проблем», он уже хорош в моей конфигурации.

Если кто-то может помочь, он будет благословлен;)

+0

PHP -m является CLI PHP, который может/будет иметь совершенно другой файл .ini, чем SAPI PHP (встроенный в веб-сервер). если вы используете этот код под веб-сервером, вам нужно проверить phpinfo(), потому что вывод cli практически бесполезен. и даже если PDO установлен, вам все равно нужны конкретные драйверы БД, например. PDO-MySQL. –

+0

Вы пытались включить 'php_pdo_sqlsrv _ *. Dll' в модулях в консоли управления IIS? – gofr1

+0

Спасибо за информацию Marc, так важно проверить правильную процедуру. php_pdo_odbc.dll в ON, даже если он должен быть встроен в Windows. Я загрузил и ссылался на php_pdo_sqlsrv _ *. Dll, и он отлично работает! Спасибо Gofr1 – Ben

ответ

0

Решенный!

Ответ приведен в вышеприведенных комментариях. Вы должны Д.Л. php_pdo_sqlsrv _ *. Длл

в вашем PHP папку и ссылки его как расширение в вашем php.ini/внутр

Символ «*» для РНР версии все хорошо описано в MSDN документ here

Благодаря