Cabe destacar que PHP7 es casi imprescindible en cualquier nuevo desarrollo web, por todas las optimizaciones y mejoras realizadas. Normalmente cuando trabajamos con cualquier web utilizamos mysql, pero si queréis trabajar con MS SQL Server o es inevitable porque ya tenéis otro sistema trabajando con dicha base de datos, deberemos hacer ciertas configuraciones para que podamos acceder a ella desde PHP.
Para configurar PHP7 con MS SQL Server, debemos realizar los siguientes pasos:
- Crear fichero “phpinfo.php” en la raíz de nuestra web con el siguiente contenido:
<?php echo phpinfo(); ?>
- Ejecutar el fichero desde el navegador (http://sitioweb/phpinfo.php). A continuación aparecerá toda la configuración de nuestra instalación de PHP:
Debemos fijarnos en los siguientes parámetros de configuración:
- PHP Version: 7.0.9
- Architecture: x86
- Compiler: MSVC14 (Visual C++ 2015)
- Thread Safety: enabled
- Descargar el driver sqlsrv según nuestra versión de PHP desde https://www.microsoft.com/en-us/download/details.aspx?id=20098. Por ejemplo, para PHP 7, deberemos descargar la versión SQLSRV40.EXE:
Al descomprimir el archivo descargado, deberemos coger el fichero que corresponda a nuestra configuración PHP (parámetros “Architecture” y “Thread Safety”). Por ejemplo:
- Para x86 y Thread Safety habilitado: php_sqlsrv_7_ts_x86.dll
- Para x86 y Thread Safety deshabilitado: php_sqlsrv_7_nts_x86.dll
- Para x64 y Thread Safety habilitado: php_sqlsrv_7_ts_x64.dll
- Para x64 y Thread Safety deshabilitado: php_sqlsrv_7_nts_x64.dll
- NOTA: También se pueden descargar los drivers desde: https://github.com/Microsoft/msphpsql/releases
Debemos copiar este fichero en la carpeta “PHP/ext”. Abrimos el fichero “php.ini” y buscamos la sección “Dynamic Extensions”, para cargar al final de dicha sección el fichero que acabamos de copiar. Por ejemplo, en nuestro caso quedaría así:
- NOTA: Evidentemente debe estar sin “;” al principio, ya que estos indican que están desactivados.
- Descargar e instalar “Visual C++ Redistributable”, según la versión que nos apareció en la página de configuración de PHP. En nuestro caso “MSVC14 (Visual C++ 2015)”, el cual podemos descargarlo desde https://www.microsoft.com/es-ES/download/details.aspx?id=48145.
- Descargar e instalar “Microsoft ODBC Driver for SQL Server”. Podemos descargar cualquiera de estas versiones:
– ODBC Driver 13 (https://www.microsoft.com/es-ES/download/details.aspx?id=50420): Compatible con SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, SQL Server 2014 y SQL Server 2016.
– ODBC Driver 11 (https://www.microsoft.com/es-ES/download/details.aspx?id=36434): Compatible con SQL Server 2005, SQL Server 2008, SQL Server 2008 R2 y SQL Server 2012.
Una vez instalado y configurado todo, reiniciamos Apache o IIS y debería funcionar la conexión perfectamente.
Hola que tal, ya hice este proceso pero no me funciono
Hola Juan Carlos,
En qué punto del proceso te has quedado? Te da algún error en concreto?
Saludos.
Buenas
me sale este mensaje
Fatal error: Uncaught Error: Call to undefined function sqlsrv_connect() in C:\xampp\htdocs\phpSql\conexion2.php:6 Stack trace: #0 {main} thrown in C:\xampp\htdocs\phpSql\conexion2.php on line 6
Hola Sandro,
La verdad es que es complicado responderte a qué puede ser debido, pero básicamente no te está realizando la conexión. No está cogiendo correctamente la DLL o te falta algún componente por instalar. Debería ver cómo tienes configurado todo para poder ayudarte con la configuración, ya que hace bastante tiempo que hice esta configuración. Si no consigues hacerlo funcionar, escríbeme de nuevo y lo vemos con más detalle.
Gracias.
Un saludo.
hola buenos dias estoy tratando de instalar la version de php con sql 2016 me pudieras ayudar no, me reconoce la libreria mssql que puedo hacer y por lo mismo no corre un programa que tengo en php y no da acceso ala base de datos
Hola,
Te comento lo mismo que al compañero anterior… es complicado averiguar el problema si no lo veo y hago pruebas en tu entorno.
Habría que ver los errores que te da exactamente.
Saludos,
Rubén.
Rubén, buenas
Seguí el procedimiento y al reiniciar el apache desde XAMPP – Control me muestra este error:
no se encuentra el punto de entrada del procedimiento call_user_function en la biblioteca de vínculos dinámicos c:\xampp\php\ext\php_sqlsrv_7_ts_x86.dll
no encontré alguna referencia sobre este error en google
Espero puede ayudarme, mil gracias!
Hola Óscar,
Creo que te salta este error porque te falta instalar Visual C++ redistributable. Tendrás que averiguar exactamente cuál es la versión exacta que debes usar según tu configuración.
Saludos.
me salió el mismo error, lo pudiste solucionar?
Bro exelente busque por todas partes y con esta explicación me queda más que claro muchas gracias. Saludos
Hola Derly,
Me alegro mucho de que te haya servido de ayuda.
Gracias por tu comentario.
Un saludo.
Hola que tal, fijate que sigo los pasos pero me marca este error httpd.exe – error del sistema el programa no puede iniciarse porque falta php7.dll en el equipo. al momento de iniciar el servicio de apache, ¿Sabes porque sera? de antemano gracias..
Hola Abraham,
Este artículo fue escrito hace ya bastante tiempo, quizás haya cambiado algo en las versiones de PHP o los conectores de SQL Server.
Tendría que verlo en profundidad… siento no poder ayudarte.
Un saludo.
y una vez que tenga eso ya puedo conectar a una bd de sql server?
Sí, claro, esa es la idea.
Un saludo.
Excelente explicación lo felicito brother, yo pude hacer bien la configuración y muchas gracias.
Solo sería añadir que en el mismo fichero que se creó el “phpinfo.php”, después de haber hecho las configuraciones, al ejecutarse en el navegador debe aparecer reflejada la configuración en el área PDO, algo así:
PDO support enabled
PDO drivers sqlsrv, mysql, sqlite
Y en nuestro caso debemos asegurarnos que aparezca ¨sqlsrv¨, si aparece entonces todo quedó bien.
Genial Jairo,
Me alegro de que le haya servido de ayuda.
Un saludo 😉
buen pos hermano, adelante, exitos.