Carga de los controladores de Microsoft para PHP para SQL Server

Descargar controlador PHP

En esta página se proporcionan instrucciones para cargar los controladores de Microsoft para PHP para SQL Server en el espacio del proceso PHP.

Puede descargar los controladores pregenerados para su plataforma desde la página del proyecto de GitHub Controladores de Microsoft para PHP para SQL Server. Cada paquete de instalación contiene archivos de controlador SQLSRV y PDO_SQLSRV en variantes subprocesadas y no subprocesadas. En Windows, también están disponibles en variantes de 32 bits y de 64 bits. Consulte Requisitos del sistema para los controladores de Microsoft para PHP para SQL Server para obtener una lista de los archivos de controlador contenidos en cada paquete. El archivo de controlador debe coincidir con la versión, la arquitectura y los subprocesos de PHP del entorno PHP.

En Linux y macOS, puedes instalar los controladores con PIE o PECL, como se describe en el tutorial de instalación.

En Windows, puedes instalar los controladores con PIE, el instalador PHP para extensiones, en la versión 5.13.3 y versiones posteriores. PIE sustituye el sistema de paquetes PECL obsoleto y te permite la extensión, así que no descargas un archivo de driver ni editasphp.ini manualmente. Windows no necesita una cadena de herramientas de compilación, porque las extensiones se distribuyen como DLLs precompiladas. PIE en sí requiere PHP 8.1 y versiones posteriores para funcionar, aunque puede instalar una extensión en cualquier otra instalación de PHP en la máquina.

pie install microsoft/sqlsrv
pie install microsoft/pdo_sqlsrv

Instala cada controlador con su propio comando. Para las instrucciones sobre cómo instalar PIE, consulta la documentación de PIE.

En Windows, PIE necesita la openssl extensión para llegar al repositorio de paquetes. Una instalación de PHP del paquete .zip de php.net utiliza el archivo php.ini-development predeterminado, que no la tiene habilitada, y PIE se detiene con The package "composer/ca-bundle" requires the extension "openssl". Establece extension_dir y activa la extensión en php.ini antes de ejecutar PIE:

extension_dir = "ext"
extension=openssl

Las instalaciones PHP gestionadas por paquetes en Linux y macOS ya se habilitanopenssl, así que este paso solo se aplica a Windows.

También puede compilar los controladores desde el código fuente durante la creación de PHP o mediante phpize. Si opta por crear los controladores desde el código fuente, tiene la opción de crearlos estáticamente en PHP en lugar de crearlos como extensiones compartidas agregando --enable-sqlsrv=static --with-pdo_sqlsrv=static (en Linux y macOS) o --enable-sqlsrv=static --with-pdo-sqlsrv=static (en Windows) al comando ./configure al crear PHP. Para más información sobre el sistema de creación de PHP y phpize, consulte la documentación de PHP.

Mover el archivo de controlador al directorio de extensión

El archivo del controlador debe estar ubicado en un directorio donde el entorno de ejecución de PHP pueda encontrarlo. Es más fácil colocar el archivo de controlador en el directorio de extensión PHP predeterminado: para buscar el directorio predeterminado, ejecutarse php -i | sls extension_dir en Windows o php -i | grep extension_dir en Linux/macOS. Si no usa el directorio de extensión predeterminado, especifique un directorio en el archivo de configuración php (php.ini), con la opción extension_dir . Por ejemplo, en Windows, si coloca el archivo de controlador en el c:\php\ext directorio, agregue la siguiente línea a php.ini:

extension_dir = "c:\PHP\ext"

Carga del controlador en el inicio de PHP

Para cargar el controlador de SQLSRV cuando se inicie PHP, mueva primero un archivo del controlador al directorio de extensión. A continuación, siga estos pasos:

  1. Para habilitar el controlador SQLSRV, modifique php.ini agregando la siguiente línea a la sección de extensiones, cambiando el nombre de archivo según corresponda para la versión de PHP y la instalación segura para subprocesos (TS) o no segura para subprocesos (NTS).

    En Windows:

    extension=php_sqlsrv_83_ts.dll
    

    En Linux, si descargó los archivos binarios creados previamente para la distribución:

    extension=php_sqlsrv_83_nts.so
    

    Si compilaste el binario SQLSRV desde el código fuente, o lo instalaste con PIE o PECL, su nombre es sqlsrv.so:

    extension=sqlsrv.so
    
  2. Para habilitar el controlador PDO_SQLSRV, la extensión de objetos de datos de PHP (PDO) debe estar disponible como extensión integrada o extensión cargada dinámicamente.

    En Windows, los archivos binarios PHP creados previamente incluyen PDO integrado, por lo que no es necesario modificar php.ini para cargarlo. Sin embargo, si ha compilado PHP desde el origen y ha especificado una extensión PDO independiente que se va a compilar, su nombre es php_pdo.dlly debe copiarlo en el directorio de extensión y agregar la siguiente línea a php.ini:

    extension=php_pdo.dll
    

    En Linux, si instaló PHP con el administrador de paquetes del sistema, es probable que PDO se instale como una extensión cargada dinámicamente denominada pdo.so. La extensión PDO debe cargarse antes que la extensión PDO_SQLSRV, o la carga fallará. Las extensiones se cargan mediante archivos .ini individuales y estos archivos se leen después de php.ini. Por lo tanto, si pdo.so se carga a través de su propio archivo .ini, se requiere un archivo independiente para cargar el controlador PDO_SQLSRV después de PDO.

    Para averiguar en qué directorio se encuentran los archivos .ini específicos de la extensión, ejecute php --ini y anote el directorio que aparece en Scan for additional .ini files in:. Busque el archivo que carga pdo.so. Debe tener un prefijo con un número, como 10-pdo.ini. El prefijo numérico indica el orden de carga de los archivos .ini, mientras que los archivos que no tienen un prefijo numérico se cargan alfabéticamente. Cree un archivo para cargar el controlador PDO_SQLSRV llamado 30-pdo_sqlsrv.ini (cualquier número mayor que el que antecede pdo.ini funcionará) o pdo_sqlsrv.ini (si pdo.ini no está prefijado con un número) y agregue la siguiente línea, cambiando el nombre de archivo según sea necesario:

    extension=php_pdo_sqlsrv_3_nts.so
    

    Al igual que con SQLSRV, si compilaste el binario PDO_SQLSRV desde el código fuente, o lo instalaste con PIE o PECL, su nombre es pdo_sqlsrv.so:

    extension=pdo_sqlsrv.so
    

    Copie este archivo en el directorio que contiene los demás archivos .ini.

    Si ha compilado PHP desde el origen con compatibilidad integrada con PDO, no necesita un archivo .ini independiente y puede agregar la línea anterior a php.ini.

  3. Reinicie el servidor web.

Nota:

Para determinar si el controlador se ha cargado correctamente, ejecute un script que llame a phpinfo().

Para obtener más información sobre las directivas de php.ini, vea el artículo Descripción de las directivas del núcleo de php.ini.