Install Driver SQL Server 2008 untuk PHP

Untuk menghubungkan PHP 8.2 di Debian 12 ke SQL Server 2008 secara stabil, Anda wajib menggunakan Microsoft ODBC Driver 17. Driver versi 18 memiliki limitasi protokol TLS yang secara otomatis akan menolak koneksi ke SQL Server 2008.

Eksekusi perintah berikut secara berurutan sebagai root untuk menginstal driver dan modul PHP yang tepat:

1. Tambahkan Repositori Microsoft dan Instal ODBC Driver 17

curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
curl -fsSL https://packages.microsoft.com/config/debian/12/prod.list | tee /etc/apt/sources.list.d/mssql-release.list
apt-get update
ACCEPT_EULA=Y apt-get install -y msodbcsql17 unixodbc-dev

2. Instal Paket Development PHP 8.2

apt-get install -y php8.2-dev php-pear build-essential

3. Update Protokol PECL dan Kompilasi Ekstensi

# Update protokol PECL sesuai peringatan sistem
pecl channel-update pecl.php.net

# Hapus paket instalasi yang menggantung jika ada
pecl uninstall sqlsrv pdo_sqlsrv

# Instal versi 5.11.1 yang kompatibel dengan PHP 8.2
pecl install sqlsrv-5.11.1 pdo_sqlsrv-5.11.1

4. Konfigurasi Prioritas Loading Modul

Langkah ini memastikan pdo_sqlsrv dimuat setelah pdo.so (prioritas 20) untuk menghindari error dependensi.

# Set prioritas pdo_sqlsrv (30)
echo "; priority=30" > /etc/php/8.2/mods-available/pdo_sqlsrv.ini
echo "extension=pdo_sqlsrv.so" >> /etc/php/8.2/mods-available/pdo_sqlsrv.ini

# Set prioritas sqlsrv (20)
echo "; priority=20" > /etc/php/8.2/mods-available/sqlsrv.ini
echo "extension=sqlsrv.so" >> /etc/php/8.2/mods-available/sqlsrv.ini

5. Bersihkan Duplikasi Ekstensi di php.ini

sed -i '/extension=sqlsrv.so/d' /etc/php/8.2/fpm/php.ini
sed -i '/extension=pdo_sqlsrv.so/d' /etc/php/8.2/fpm/php.ini
sed -i '/extension=sqlsrv.so/d' /etc/php/8.2/cli/php.ini
sed -i '/extension=pdo_sqlsrv.so/d' /etc/php/8.2/cli/php.ini

6. Re-registrasi Bersih dan Restart Service

# Hapus symlink lama pdo_sqlsrv yang aktif di FPM dan CLI
rm -f /etc/php/8.2/fpm/conf.d/*pdo_sqlsrv.ini
rm -f /etc/php/8.2/cli/conf.d/*pdo_sqlsrv.ini

# Aktifkan ulang kedua modul secara bersih (membuat symlink baru)
phpenmod sqlsrv pdo_sqlsrv

# Restart PHP-FPM dan lakukan uji validasi sintaks konfigurasi
systemctl restart php8.2-fpm
php-fpm8.2 -t

Tidak ada komentar:

Posting Komentar