Saltar al contenido

Conexión al servidor MSSQL en PHP mediante autenticación integrada

Solución:

Está bien. Es difícil depurar un problema del servidor sin estar en el servidor, pero he hecho mucho con php y SQL Server, así que haré todo lo posible para compartir mis experiencias.

Primero, muy contento de que haya actualizado desde 5.3.1 que la versión de php es antigua y muy insegura. Aquí hay algunas comprobaciones de cordura para su sistema. Es posible que esto no le sirva de nada, pero vale la pena comprobarlo todo.

  1. Primero asegúrese de que puede conectarse al servidor SQL utilizando SQL Server Management Studio con las credenciales que proporcionó. Esto significa las mismas credenciales que usa en php, no las credenciales de autenticación de Windows. Debería poder tener ambas conexiones al mismo tiempo para poder realizar cambios y probar la conexión al mismo tiempo.

    1. Habilite tcp. administrador de configuración del servidor sql -> configuración de red del servidor SQL -> protocolos para sqlexpress -> tcp / ip (clic derecho) -> propiedades -> habilitado (sí) -> direcciones ip -> IPAll -> puerto TCP 1433 -> ok
    2. Habilite la autenticación del servidor SQL. Seleccione el servidor (clic derecho) -> propiedades -> seguridad -> servidor SQL y modo de autenticación de Windows -> ok
    3. Abra el puerto del servidor SQL en el firewall. Panel de control de Windows -> sistema y seguridad -> firewall de Windows -> configuración avanzada -> Reglas de entrada -> Nueva regla -> Puerto -> tcp -> 1433 (o lo que sea) -> Permitir conexión -> siguiente -> Nombre -> sql servidor -> finalizar -> reiniciar la computadora.
    4. Por supuesto, si desea conectarse a través de un usuario no predeterminado, debe agregar el usuario: servidor sql -> seguridad -> inicios de sesión (clic derecho) -> agregar inicio de sesión -> roles de servidor -> sysadmin -> ok
    5. Si realiza alguno de estos cambios, reinicie el servidor SQL: Administrador de configuración del servidor SQL -> Servicios del servidor SQL -> Servidor SQL (clic derecho) -> Reiniciar.
  2. Una vez que confirme, puede conectarse con Management Studio, aquí están las verificaciones de configuración de php:

    1. Puede ver si la extensión en sí está disponible creando una página php con solo la función phpinfo() en eso. Entonces busca pdo_sqlsrv. Si está presente, el resto de estas comprobaciones probablemente no sean necesarias, pero como ha estado trabajando tanto tiempo, probablemente las verifique de todos modos.
    2. La extensión sql_srv para php debe ser la versión 3.2 para php 5.6, puede obtener esa biblioteca aquí
    3. La versión 3.2 requiere una extensión de sistema operativo disponible aquí. Consulte los otros requisitos en el enlace anterior. Su sistema operativo puede usar una extensión diferente a la que está vinculada aquí.
    4. Busque su directorio de extensiones php. esto suele ser {php-install-directory} / ext. Asegúrese de copiar la versión adecuada de las bibliotecas sqlsrv descargadas en este directorio. Los míos se llaman “php_sqlsrv_55_ts.dll” y “php_dpo_sqlsrv_55_ts.dll” El tuyo tendrá 56 en lugar de 55, creo y el “ts” debería coincidir con tu instalación de php. “ts” significa seguro para subprocesos, la otra opción es “nts” no seguro para subprocesos. El que use depende de su instalación de php.
    5. Mi archivo php.ini contiene estas líneas extension=php_sqlsrv_55_ts.dll y extension=php_pdo_sqlsrv_55_ts.dll en ese orden. pero no creo que el orden importe. y de nuevo el tuyo será 56 y los “ts” pueden ser “nts”.
    6. Si realizó algún cambio basado en estos, asegúrese de reiniciar Apache y luego verifique si pdo_sqlsrv está en su informe phpinfo (). Además, después de reiniciar apache, verifique el registro de errores de apache y php para ver si obtiene errores específicos sobre php que intenta cargar las extensiones. Publíquelos aquí si necesita ayuda con ellos.
  3. Una vez que esté conectado al servidor sql a través de las acreditaciones de autenticación en el estudio de administración y vea pdo_sqlsrv en su phpinfo (), aquí están las últimas cosas que debe analizar en su código.

    1. Su código anterior sigue siendo para la extensión mssql. Probablemente no lo actualizó con sus últimos cambios. Para la extensión del servidor SQL, su código debería verse así:

      $connectionInfo = array(
      'UID' => $dbuser,
      'PWD' => $dbpass,
      'LoginTimeout' => 1,
      );
      $host = $host . ', ' . $port;
      $connection = sqlsrv_connect($host, $connectionInfo);
      $error_messages = sqlsrv_errors();

    2. Para la autenticación de Windows, excluya uid y pwd.

      $connectionInfo = array();
      $conn = sqlsrv_connect( $host, $connectionInfo);

Si tiene más problemas, dígame qué paso no funciona para que podamos profundizar en más detalles con ese paso.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *