| # Building sqlsrv & pdo_sqlsrv (.so) on Linux |
| |
| Microsoft ships the MSSQL PHP drivers as **source through PECL**, so the `.so` must be compiled |
| against your exact PHP version. This is fast and repeatable. Example for **Debian/Ubuntu, x64**. |
| |
| ## 1. Install the Microsoft ODBC driver (runtime dependency) |
| |
| ```bash |
| # Debian/Ubuntu |
| curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc |
| curl https://packages.microsoft.com/config/debian/12/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list |
| sudo apt-get update |
| sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18 unixodbc-dev |
| ``` |
| |
| ## 2. Install PHP build tooling |
| |
| ```bash |
| # replace 8.3 with your PHP minor version |
| sudo apt-get install -y php8.3-dev php-pear gcc g++ make |
| ``` |
| |
| ## 3. Build the extensions with PECL |
| |
| ```bash |
| # For PHP 8.1+ the latest 5.13.x works; for PHP 7.4/8.0 pin 5.10.1: |
| sudo pecl install sqlsrv pdo_sqlsrv |
| # or a pinned version: |
| # sudo pecl install sqlsrv-5.10.1 pdo_sqlsrv-5.10.1 # PHP 7.4 / 8.0 |
| # sudo pecl install sqlsrv-5.12.0 pdo_sqlsrv-5.12.0 # PHP 8.1 / 8.2 |
| # sudo pecl install sqlsrv-5.13.3 pdo_sqlsrv-5.13.3 # PHP 8.3 |
| ``` |
| |
| The compiled `sqlsrv.so` and `pdo_sqlsrv.so` land in your `extension_dir` |
| (`php-config --extension-dir`). |
| |
| ## 4. Enable them |
| |
| ```bash |
| 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 |
| sudo phpenmod sqlsrv pdo_sqlsrv |
| php -m | grep -i sqlsrv |
| ``` |
| |
| ## Version compatibility (msphpsql) |
| |
| | Driver version | Supported PHP | |
| |----------------|---------------| |
| | 5.10.x | 7.4 – 8.1 | |
| | 5.11.x | 8.0 – 8.2 | |
| | 5.12.x | 8.1 – 8.3 | |
| | 5.13.x | 8.1 – 8.4 | |
| |
| ## Alpine Linux (musl) |
| |
| ```bash |
| apk add --no-cache unixodbc-dev php83-dev php83-pear gcc g++ make |
| # plus the msodbcsql18 musl package from Microsoft |
| pecl install sqlsrv pdo_sqlsrv |
| ``` |
| |