Solucionar “Undefined function mssql_connect()”

Seguramente a más de uno le ha pasado y le está pasando, por eso llegó a este humilde blog, me estoy refiriendo al Fatal error lanzado por php cuando se intenta realizar una conexión hacia una base de datos Microsoft SQL Server, el error es similar al siguiente:

Fatal error: Call to undefined function mssql_connect() in X:\ServerPath\www\connexion.php on line 12

Se puede presentar en servidores con las siguientes características:

Windows Server 2003 + IIS + SQL Server 2005 + php

Windows Server 2003 + Apache + SQL Server 2005 + php

Bueno, realmente ocurre casi independientemente del Sistema Operativo, ya que el error es causado por el php, al no poder cargar la extensión para el manejo de dicha función.

Causas:

Puede ser causado por mala configuración del archivo php.ini, así también por la librería ntwdblib.dll, puesto que la versión original, la 2000.2.8.0 de dicha librería tiene algún conflicto con las conexiones hacia SQL 2005, incluido SQL Express 2005 (no me pregunten por que xD) ver imagen:

http://img402.imageshack.us/img402/9013/ntwdblib2000280.png

Esta librería debe ser reemplazada por la versión 2000.80.194.0 para poder corregir el problema, como se ve a continuación:

Esta librería debe sobre escribir la que se encuentra en el directorio del php, si no sabes como encontrar dicho directorio, es muy fácil, solo debes dar clic en inicio, luego clic en ejecutar y escribir cmd, luego tecleas echo %path% y mostrará algo como lo siguiente, donde lo importante es ver la ruta del php, en mi caso la unidad D es en la que tengo el AppServ:

También debe copiarse el archivo ntwdblib.dll dentro del directorio de Windows, normalmente será: C:\Windows

Configuración de PHP.ini

Las líneas importantes para nuestro caso práctico son las líneas 470, 471 , 597 y 598.

La línea 470 y 471 respectivamente, muestran lo siguiente:

; Directory in which the loadable extensions (modules) reside.
extension_dir = “.;”


el contenido entre ” comillas, puede variar y en algunos casos contendrá algo como:

“c:\ubicacion_aplicacion\/php5/ext”

lo cual se debe corregir a:

“c:\ubicacion_aplicacion\php5\ext”

en mi caso:

Luego de hacer estas correcciones, se deben quitar los ; punto y coma de las líneas 597 y 598 o para ser más específico, donde se encuentre lo siguiente:

;extension=php_msql.dll
;extension=php_mssql.dll

Ahora, solo se debe reiniciar los servicios, si no sabes, para no hacer más largo este manual, solo reinicia el equipo.

Por último, dejo las descargas de los archivos de este manual.

Descargar ntwdblib.dll Descargar Todos los archivos (incluye este manual en formato docx)

Contraseña para descomprimir: www.fiestachapina.net

3 comentarios »

  1. Carlos Says:

    Muy buen aporte, gracias me ayudo, en todo.

    comment-bottom
  2. david Says:

    pues mira ya lo intente pero aun asi en el phpinfo no aparece el servicio de mssql ña neta ya me desespere ojala que me puedas ayudar un poco en este caso te esplico rapido como lo hice.
    en una maquina virtual instale el windows 2003 el appserv 2.5.9, reemplace la libreria, descomente lo comentado, la ruta de los directorios estan correctos, ahora dime que crees que sea lo que pase por que la neta ya nole encuantro saludos y gracias de antemano

    comment-bottom
  3. admin Says:

    mmm pues a decir verdad solo me queda la duda si reiniciaste correctamente los servicios o en todo caso, reinicia el sistema en la máquina virtual, ojo, no solo apagues o cierres la máquina virtual, pídele que guarde los cambios para reiniciar, porque podría estar perdiendo los cambios.

    Saludos, me gustaría tener más datos

    comment-bottom

RSS feed para los comentarios de esta entrada. TrackBack URL

Deja un comentario