2011-09-13 30 views
20

Me actualicé a PHP 5.3 y noté que falta php_mssql.dll. Después de googlear un poco, parece que 5.3 ha perdido soporte para mssql. Así que descargué los controladores de Microsoft, pero parece que no puedo hacer que funcione.¿Cómo hacer que mssql funcione con PHP 5.3?

Estoy en Windows. ¿Qué debo hacer después de descomprimir los archivos en el directorio ext de mi PHP 5.3?

Respuesta

34

Citando http://php.net/manual/en/intro.mssql.php:

La extensión MSSQL ya no está disponible en Windows con PHP 5.3 o posterior. SQLSRV, un controlador alternativo para MS SQL está disponible en Microsoft: »http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx.

Una vez que ha descargado de eso, siga las instrucciones en esta página:

En pocas palabras:

poner el archivo de controlador en el directorio de extensiones de PHP .
Modifique el archivo php.ini para incluir el controlador. Por ejemplo:

extension=php_sqlsrv_53_nts_vc9.dll 

Reinicie el servidor web.

Ver también (copiado de la página)

El Manual de PHP para la extensión SQLSRV se encuentra en http://php.net/manual/en/sqlsrv.installation.php y ofrece lo siguiente para la instalación:

La extensión SQLSRV se habilita mediante la adición de archivos DLL apropiada a su directorio de extensiones de PHP y la entrada correspondiente en el fichero php.ini. La descarga de SQLSRV viene con varios archivos de controladores. El archivo de controlador que use dependerá de 3 factores: la versión de PHP que está utilizando, si está utilizando PHP seguro para subprocesos o no, y si su instalación de PHP fue compilada con el compilador VC6 o VC9. Por ejemplo, si está ejecutando PHP 5.3, está usando PHP no seguro para subprocesos y su instalación de PHP fue compilada con el compilador VC9, debe usar el archivo php_sqlsrv_53_nts_vc9.dll. (Debe usar una versión no segura para subprocesos compilada con el compilador VC9 si está utilizando IIS como su servidor web). Si está ejecutando PHP 5.2, está utilizando PHP seguro para subprocesos y su instalación de PHP fue compilada con el compilador VC6, debe usar el archivo php_sqlsrv_52_ts_vc6.dll.

Los controladores can also be used with PDO.

+1

bien, lo tengo funcionando. Parece que han cambiado el nombre de todas las funciones :(¿Tengo que usar diferentes llamadas a funciones para Windows y Linux? Como el viejo mssql_ * para Linux, y sqlsrv_ * para Windows? –

+0

@ user187809 La extensión SQLSRV solo es compatible con PHP ejecutándose Windows. – Gordon

+0

¿no podemos usar mssql_connect y otras funciones mssql_ (x) en la extensión SQLSRV? Porque ya he desarrollado una aplicación con PHP4 y hemos actualizado a PHP versión 5.3.x – Prabu

3

Descargar Microsoft Drivers for PHP for SQL Server.Extraer los archivos y el uso de uno de:

File        Thread Safe   VC Bulid 
php_sqlsrv_53_nts_vc6.dll   No     VC6 
php_sqlsrv_53_nts_vc9.dll   No     VC9 
php_sqlsrv_53_ts_vc6.dll   Yes     VC6 
php_sqlsrv_53_ts_vc9.dll   Yes     VC9 

se puede ver el estado del hilo de seguridad en phpinfo().

Añadir el archivo correcto en el directorio ext y la siguiente línea a su php.ini:

extension=php_sqlsrv_53_*_vc*.dll 

utilizar el nombre del archivo que utilizó.

Como Gordon ya se ha publicado esto es la nueva extensión de Microsoft y utiliza el * API sqlsrv_ en lugar de mssql_ *

Actualización:
En Linux no tiene los controladores necesarios y ni la Extensión SQLSERV.
Mire Connect to MS SQL Server from PHP on Linux? para una discusión sobre esto.

En resumen, debe instalar FreeTDS y SÍ necesita usar las funciones mssql_ * en Linux. ver Boletín 2

Para simplificar las cosas en el largo plazo que recomendaría la creación de una clase contenedora con las funciones necesarias, que utilizan la API apropiado (* sqlsrv_ o mssql_ *) en base a qué extensión se carga.

Actualización 2: No necesita utilizar las funciones mssql_ * en Linux. Puede conectarse a un servidor ms sql usando PDO + ODBC + FreeTDS. En Windows, el método de mejor rendimiento para conectarse es a través de PDO + ODBC + SQL Native Client ya que el controlador PDO + SQLSRV puede ser increíblemente lento.

+1

¿Qué pasa con Linux y Windows? ¿Necesito utilizar llamadas de funciones diferentes para diferentes sistemas operativos? –

+1

La extensión SQLSRV de microsoft solo está disponible para Windows. Para utilizar un servidor MS SQL desde un servidor web Linux, necesita utilizar un controlador de terceros ya que Microsoft no proporciona uno. Mire esta pregunta http : //stackoverflow.com/questions/507479/connect-to-ms-sql-server-from-php-on-linux. – danishgoel

Cuestiones relacionadas