Estoy tratando de conectarme a un servidor SQL en PHP. Con XAMPP en mi máquina local, todo funciona bien. Pero ahora voy a llevar mi aplicación al servidor de producción.
En este servidor se encuentra instalado Microsoft IIS 6.1 y ejecutando PHP versión 7.0.7 . También instalé el controlador ODBC desde aquí . A continuación, elimino la siguiente línea en mi archivo php.ini:
extension=php_sqlsrv_7_nts.dll extension=php_pdo_sqlsrv_7_nts.dllObtuve los archivos del sitio oficial de Microsoft .
¿Cuál es mi problema?
Desafortunadamente, después de reiniciar IIS. La función PDO arroja el error PDOException con el siguiente mensaje:
could not find driverPara la conexión estoy usando la siguiente función que funciona bastante bien en mi máquina local:
try { $con = new PDO("sqlsrv:Server=" . SERVER . ";Database=" . DATABASE, USERNAME, PASSWORD); // set the PDO error mode to exception $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo "No connection: " . $e->getMessage(); exit; }¿Qué más puedo hacer?
Aquí hay un proceso detallado si es útil para alguien. PHP Version - 7.4
Descargue y extraiga los archivos .dll desde este enlace: https://docs.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15
Pegue los archivos en C:\xampp\php\ext , su ruta podría ser diferente.
en php.ini agregue esas dos líneas en la parte inferior o en la sección de extensión.
extension=php_sqlsrv_74_ts_x64.dll extension=php_pdo_sqlsrv_74_ts_x64.dllReinicie su servidor Xampp, le sugiero que reinicie su computadora y todo funcionará sin problemas.
Compruebe si SqlSRV está habilitado
Verifique usando phpinfo() o http://localhost/dashboard/phpinfo.php de esta manera:
Espero que ayude a alguien.
Después de encontrar el registro de errores en el servidor de Windows, resolví el error yo mismo.
Recibí este error en mi registro:
[21-Apr-2017 07:12:14 UTC] PHP Warning: PHP Startup: Unable to load dynamic library '...\ext\php_pdo_sqlsrv_7_nts.dll' - %1 is not a valid Win32 application. in Unknown on line 0Luego volví a descargar el controlador e instalé el controlador x64. Finalmente funciona sin ningún problema.
Me tomó un tiempo resolver el error 'Sin controlador'. Seguí algunos pasos como se menciona aquí y encontré algunos otros que me ayudaron después de nuevos errores. Para futuras referencias:
$dbh = new PDO ("sqlsrv:Server=$server;Database=$dbname",$username,$pw);Si agrega un puerto, use:
$server = "192.168.1.15, 51022";Donde la IP (puede ser el nombre de host) es su servidor y 51022 su puerto.