Si estás desarrollando aplicaciones con PHP y CodeIgniter 4 en Linux Mint y necesitas conectarte a Microsoft SQL Server, es posible que te encuentres con errores como:

  • ❌ Unable to connect to the database
  • ❌ Undefined constant “CodeIgniter\Database\SQLSRV\SQLSRV_ENC_CHAR”

La buena noticia es que la solución es sencilla una vez que se instalan correctamente los controladores de Microsoft y las extensiones de PHP. En esta guía te explicamos paso a paso cómo hacerlo. 👨‍💻

📋 Requisitos Previos

  • ✅ Linux Mint 22.1 (Xia)
  • ✅ PHP 8.3 instalado
  • ✅ Acceso a terminal con permisos de administrador
  • ✅ Conexión a Internet

🔍 Verificar la Versión de PHP

Primero, verifica la versión de PHP instalada:

php -v

📦 Instalar Dependencias Necesarias

Instala las herramientas necesarias para compilar las extensiones:

sudo apt update sudo apt install -y php8.3-dev php-pear build-essential unixodbc-dev

🛠️ Agregar el Repositorio de Microsoft

Importa la clave de Microsoft:

curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | \ sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg

Agrega el repositorio:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/ubuntu/24.04/prod noble main" | sudo tee /etc/apt/sources.list.d/mssql-release.list

Actualiza los repositorios:

sudo apt update

💾 Instalar el Driver ODBC de SQL Server

Instala el controlador oficial de Microsoft:

sudo ACCEPT_EULA=Y apt install -y msodbcsql18

Verifica que el paquete esté disponible:

apt search msodbcsql

⚙️ Instalar las Extensiones SQLSRV y PDO_SQLSRV

Instala las extensiones PHP utilizando PECL:

sudo pecl install sqlsrv sudo pecl install pdo_sqlsrv

🔧 Activar las Extensiones

Crea los archivos de configuración:

echo "extension=sqlsrv.so" | sudo tee /etc/php/8.3/mods-available/sqlsrv.ini echo "extension=pdo_sqlsrv.so" | sudo tee /etc/php/8.3/mods-available/pdo_sqlsrv.ini

Activa las extensiones:

sudo phpenmod sqlsrv sudo phpenmod pdo_sqlsrv

🔄 Reiniciar Apache

Si utilizas Apache, reinícialo:

sudo systemctl restart apache2

✅ Verificar la Instalación

Comprueba que PHP cargó correctamente las extensiones:

php -m | grep sqlsrv

La salida correcta será:

pdo_sqlsrv sqlsrv

También puedes verificar la constante utilizada por CodeIgniter:

php -r "var_dump(defined('SQLSRV_ENC_CHAR'));"

Resultado esperado:

bool(true)

🎯 Configuración en CodeIgniter 4

Una vez instaladas las extensiones, puedes configurar la conexión de esta forma:

$config = [ 'DBDriver' => 'SQLSRV', 'hostname' => 'servidor', 'database' => 'base_de_datos', 'username' => 'usuario', 'password' => 'contraseña', 'port' => 1433, ];

🚨 Errores Comunes

❌ Undefined constant SQLSRV_ENC_CHAR

Este error ocurre cuando la extensión sqlsrv no está instalada o no se encuentra cargada en PHP.

❌ Unable to load dynamic library ‘sqlsrv.so’

Indica que PHP intenta cargar el módulo, pero el archivo sqlsrv.so no existe o no fue instalado correctamente.

❌ Error SSL Provider o Certificate

Con ODBC Driver 18 algunos servidores requieren configuración adicional de certificados o habilitar la confianza del certificado del servidor.

🎉 Conclusión

Instalar SQL Server en Linux Mint para PHP y CodeIgniter puede parecer complicado al principio, pero siguiendo estos pasos podrás conectar tu aplicación sin problemas.

Una vez instaladas las extensiones sqlsrv y pdo_sqlsrv, CodeIgniter podrá comunicarse con Microsoft SQL Server de forma nativa y eficiente.

💡 Si trabajas con aplicaciones empresariales, ERPs o sistemas administrativos, esta configuración te permitirá integrar fácilmente bases de datos SQL Server desde entornos Linux.

🚀 ¡Ahora ya estás listo para desarrollar con PHP, CodeIgniter y SQL Server en Linux Mint!