fix : error db tidak connect

This commit is contained in:
unknown
2026-06-09 17:54:45 +07:00
parent 28a7b04893
commit c33deeace9
2 changed files with 33 additions and 18 deletions
+23
View File
@@ -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
View File
@@ -1,33 +1,25 @@
<?php <?php
/** /**
* Nama Berkas: koneksi.php * Kegunaan: Menangani koneksi PDO dengan dukungan variabel lingkungan untuk lingkungan produksi.
* Kegunaan: Menangani jembatan komunikasi antara skrip PHP dengan server basis data MySQL menggunakan PDO.
*/ */
header("Content-Type: application/json"); header("Content-Type: application/json");
$indeks_host = "127.0.0.1"; // Membaca dari environment peladen, jika tidak ada, gunakan nilai bawaan (fallback) untuk lokal
$nama_pengguna = "root"; $indeks_host = getenv('DB_HOST') ?: "127.0.0.1";
$kata_sandi = "root"; $port_db = getenv('DB_PORT') ?: "3306";
$nama_database = "webgis_db"; $nama_pengguna = getenv('DB_USER') ?: "root";
$kata_sandi = getenv('DB_PASS') ?: "root";
$nama_database = getenv('DB_NAME') ?: "webgis_db";
try { try {
/* * Membuka koneksi baru dengan penggerak PDO MySQL. $koneksi_pdo = new PDO("mysql:host=$indeks_host;port=$port_db;dbname=$nama_database;charset=utf8", $nama_pengguna, $kata_sandi);
* 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->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $koneksi_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $kesalahan_sistem) { } catch (PDOException $kesalahan_sistem) {
// Menghentikan proses secara aman dan mengembalikan pesan kegagalan terformat JSON
echo json_encode([ echo json_encode([
"status" => "error", "status" => "error",
"message" => "Koneksi ke basis data gagal dilakukan: " . $kesalahan_sistem->getMessage() "message" => "Koneksi basis data gagal: " . $kesalahan_sistem->getMessage()
]); ]);
exit; exit;
} }
?> ?>