Cara Install Driver SQL Server for PHP di Amazon Linux 2023
Setelah menghabiskan waktu beberapa hari untuk coba-coba install sqlsrv dan pdo_sqlsrv (sudah menemukan artikel dan caranya sih, tapi mungkin ada yang salah step ya atau urutannya ngga pas, jadi stuck beberapa hari dan akhirnya baru bisa), jadi post ini untuk pengingat di kemudian hari juga in case butuh lagi.
Untuk cara install LAMP (karena aku pakai PHP), bisa dilihat cara standard yang sudah disediakan oleh AWS di sini
Install LAMP
sudo dnf update -y
sudo dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel
sudo dnf install mariadb105-server (kalau perlu MySQL/MariaDB saja ya)
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl is-enabled httpd
sudo usermod -a -G apacheec2-user
exit
sudo chown -R ec2-user:apache /var/www
sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
find /var/www -type f -exec sudo chmod 0664 {} \;
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
Script di atas merupakan script standard dari Amazonnya sih, jadi kalau ngga perlu setting yang aneh-aneh, sudah cukup untuk sekedar jalankan server PHP (security dll, tolong diatur sendiri yah, ada di linknya kok)
Install Extension SQL SRV
Selanjutnya kita coba install extension untuk SQL Server (dalam kasusku, connectnya ke RDS SQL Server yah). Artikel aslinya aku dapat dari sini.
yum install yum-utilssudo su
sudo yum-config-manager --add-repo https://packages.microsoft.com/config/rhel/7/prod.repo
sudo yum install php-pear php-devel gcc
sudo ACCEPT_EULA=Y yum install -y php msodbcsql mssql-tools unixODBC-devel php-devel php-pear php-pdo php-xml re2c gcc-c++ gcc
--skip-brokensudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
echo "extension=sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
echo "extension=pdo_sqlsrv" >> /etc/php.d/30-pdo_sqlsrv.ini
sudo setsebool -P httpd_can_network_connect_db 1
Setelah ikutin step-step di atas, aku coba reboot instance (ini yang kelihatannya ngga aku lakukan waktu percobaan pertama beberapa hari lalu, karena di artikel2 lain ditulis cukup restart httpd aja sih).
Nah, setelah reboot, coba check lagi di phpinfo.php yang td sudah dibuat. Jika sudah betul, maka harusnya ada sqlsrv di bagian Registered PHP Streams (tandanya sdh berhasil diload).
Kalau mau lebih pasti untuk test koneksi sekalian dengan RDS nya, bisa coba pakai script di bawah ini juga:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$serverName = "[YOUR_DB_ADDRESS]";
$connectionOptions = array(
"Database" => "[DB_NAME]",
"Uid" => "[USER]",
"PWD" => "[PASSWORD]"
);
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn === false )
{ print "Working"; } else { print "Error"; }
?>
Selamat mencoba.