Uncategorized

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 apache ec2-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-utils
sudo 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-broken
sudo 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.