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