2011-05-10 14 views
24

Estoy tratando de obtener una nueva conexión de PDO usando el siguiente código.Conectando a mssql usando pdo a través de php y linux

new PDO("mssql:driver=????;Server={$serverName};Database={$databaseName}", $username, $password, array(PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 

No sé qué controladores usar? o cómo instalarlos. Me puedo conectar perfectamente bien usando la función mssql_connect en PHP, pero en su lugar quiero usar la biblioteca PDO.

Háganme saber si tiene alguna idea sobre cómo resolver mi problema o cómo puedo responder mejor a mi pregunta.

Mi configuración de php.ini para mssql son:

sSQL

MSSQL apoyo permitió
enlaces persistentes activos 0
Enlaces Activos 1
versión FreeTDS Biblioteca

Directiva local de valores de control Valor
mssql.allow_persistent Encendido
mssql.batchsize 0 0
mssql.charset ningún valor sin valor
mssql.compatability_mode Apagado Apagado
mssql.connect_timeout 5 5
mssql.datetimeconvert On On
mssql.max_links Ilimitado Ilimitado
mssql.max_persistent Ilimitado Ilimitado
mssql.max_procs ilimitado ilimitado
mssql.min_error_severity 10 10
mssql.min_message_severity 10 10
mssql.secure_connection Off Off
mssql.textlimit defecto por defecto del servidor Servidor
mssql.textsize defecto por defecto del servidor Servidor
mssql.timeout 60 60

Gracias

Respuesta

29

El conductor mssql DOP es no más, utilice sqlsrv (bajo windows php) o dblib (php bajo Linux)

http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx

http://www.php.net/manual/en/ref.pdo-dblib.php

+0

usando dblib todavía produce el error de los controladores faltantes. "Excepción no detectada 'PDOException' con el mensaje 'no se pudo encontrar el controlador'". Me parece extraño que mssql_connect funcione bien, pero tengo que hacer algo para que funcione el PDO. No estoy muy familiarizado con Linux, lo que significa que no estoy seguro de obtener los controladores que necesito resolver. – richie

+2

Debe habilitar pdo_dblib.so en su php.ini y configurar FreeTDS en Linux. – James

+0

¿cómo habilita pdo_dblib en la configuración? también estoy usando centos 5 32bit, ¿cómo lo configuraría? – shorif2000

1

Prueba

$dbh = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw"); 

$hostname may need to be configured as either... 
$hostname.':'.$port; 

O

$hostname.','.$port; 
+2

El mensaje de error que aparece es Excepción no detectada 'PDOException' con el mensaje 'no se pudo encontrar el controlador' – richie

4

estoy usando Ubuntu 14.04. Intentando conectarme a MSSQL obtuve la "excepción no detectada 'PDOException' con el mensaje 'no pude encontrar el controlador'". Parece que me faltaba la extensión PHP dblib/sybase.

tuve que correr:

sudo apt-get install php5-sybase freetds-common libsybdb5 \ 
&& sudo apache2ctl restart 

funciona bien ahora.

+0

El paquete php-sybase resolvió el problema para mí. No necesité instalar los otros. –

Cuestiones relacionadas