fix : error db tidak connect
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# Menggunakan cetak biru resmi PHP versi 8.2 yang terintegrasi dengan Apache
|
||||
FROM php:8.2-apache
|
||||
|
||||
# Memperbarui manajer paket dan menginstal dependensi sistem dasar
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libmariadb-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Menginstal dan mengaktifkan ekstensi PDO MySQL agar file koneksi.php dapat berjalan
|
||||
RUN docker-php-ext-install pdo pdo_mysql
|
||||
|
||||
# Mengaktifkan modul rewrite pada Apache untuk manajemen URL (praktik keamanan standar)
|
||||
RUN a2enmod rewrite
|
||||
|
||||
# Menyalin seluruh berkas proyek (HTML, PHP) ke direktori root peladen web di dalam kontainer
|
||||
COPY . /var/www/html/
|
||||
|
||||
# Mengatur hak kepemilikan dan perizinan berkas agar Apache dapat mengeksekusi skrip PHP
|
||||
RUN chown -R www-data:www-data /var/www/html/ \
|
||||
&& chmod -R 755 /var/www/html/
|
||||
|
||||
# Membuka porta 80 untuk menerima lalu lintas HTTP dari luar kontainer
|
||||
EXPOSE 80
|
||||
+10
-18
@@ -1,33 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* Nama Berkas: koneksi.php
|
||||
* Kegunaan: Menangani jembatan komunikasi antara skrip PHP dengan server basis data MySQL menggunakan PDO.
|
||||
* Kegunaan: Menangani koneksi PDO dengan dukungan variabel lingkungan untuk lingkungan produksi.
|
||||
*/
|
||||
|
||||
header("Content-Type: application/json");
|
||||
|
||||
$indeks_host = "127.0.0.1";
|
||||
$nama_pengguna = "root";
|
||||
$kata_sandi = "root";
|
||||
$nama_database = "webgis_db";
|
||||
// Membaca dari environment peladen, jika tidak ada, gunakan nilai bawaan (fallback) untuk lokal
|
||||
$indeks_host = getenv('DB_HOST') ?: "127.0.0.1";
|
||||
$port_db = getenv('DB_PORT') ?: "3306";
|
||||
$nama_pengguna = getenv('DB_USER') ?: "root";
|
||||
$kata_sandi = getenv('DB_PASS') ?: "root";
|
||||
$nama_database = getenv('DB_NAME') ?: "webgis_db";
|
||||
|
||||
try {
|
||||
/* * Membuka koneksi baru dengan penggerak PDO MySQL.
|
||||
* Mengatur set karakter ke UTF-8 untuk mencegah kerusakan simbol geometri data spasial.
|
||||
*/
|
||||
$koneksi_pdo = new PDO("mysql:host=$indeks_host;dbname=$nama_database;charset=utf8", $nama_pengguna, $kata_sandi);
|
||||
|
||||
/* * Mengaktifkan sistem penanganan kesalahan otomatis tingkat industri.
|
||||
* Parameter ATTR_ERRMODE set ke ERRMODE_EXCEPTION memaksa setiap kegagalan query menjadi sebuah Exception yang aman.
|
||||
*/
|
||||
$koneksi_pdo = new PDO("mysql:host=$indeks_host;port=$port_db;dbname=$nama_database;charset=utf8", $nama_pengguna, $kata_sandi);
|
||||
$koneksi_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
|
||||
} catch (PDOException $kesalahan_sistem) {
|
||||
// Menghentikan proses secara aman dan mengembalikan pesan kegagalan terformat JSON
|
||||
echo json_encode([
|
||||
"status" => "error",
|
||||
"message" => "Koneksi ke basis data gagal dilakukan: " . $kesalahan_sistem->getMessage()
|
||||
"message" => "Koneksi basis data gagal: " . $kesalahan_sistem->getMessage()
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
?>
|
||||
Reference in New Issue
Block a user