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
|
||||||
+9
-17
@@ -1,32 +1,24 @@
|
|||||||
<?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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user