# PT-002 — paket shared hosting

URL: https://dashboard.myinfo.ptcmp-group.id

Document root: `/home/bikinev2/myinfo/dashboard`.
Direktori extract ZIP: `/home/bikinev2/myinfo` (parent document root).

Layout setelah extract:

```text
/home/bikinev2/myinfo/
  dashboard/            document root existing; tidak disentuh PT-002
  backend/config/       loader environment dan bootstrap privat
  backend/src/Database/ connection layer PDO
  backend/scripts/      probe development CLI
  backend/tests/        tes konfigurasi tanpa koneksi DB
  backend/README.md
  docs/                 panduan dan baseline
  .env.example          template, bukan credential aktual
  .env                  dibuat/diisi sendiri di hosting; tidak ada dalam ZIP
```

## Upload dan extract

Upload `myinfo-pt002.zip` lewat File Manager ke `/home/bikinev2/myinfo`, di luar document root.
Di Terminal cPanel:

```sh
mkdir -p /home/bikinev2/myinfo
unzip -o /home/bikinev2/myinfo/myinfo-pt002.zip -d /home/bikinev2/myinfo
cd /home/bikinev2/myinfo
```

`-o` mengganti file paket bernama sama. Paket tidak berisi `dashboard/` atau `.env`,
sehingga tidak menimpa document root dan credential existing. Backup kode versi
sebelumnya sebelum mengganti deployment yang telah digunakan. ZIP ini belum
menyediakan halaman dashboard atau endpoint HTTP; itu di luar scope PT-002.

Jika belum ada `.env`, buat salinan dengan permission privat:

```sh
cd /home/bikinev2/myinfo
if [ ! -e .env ]; then
  (umask 077; cp .env.example .env)
fi
```

Isi DB_HOST, DB_NAME, DB_USER, DB_PASSWORD melalui editor privat di hosting.
Gunakan APP_ENV=production untuk deployment production, staging untuk staging,
dan development hanya untuk development. Jangan tulis credential di command,
chat, log, source, atau ZIP. Jangan menimpa `.env` existing.

## Verifikasi PHP

Pengguna telah mengubah PHP hosting ke 8.4. Konfirmasi PHP CLI dengan `php -v`
dan driver pdo_mysql dengan `php -m`, karena PHP CLI dapat berbeda dari PHP website.
Tes/probe kini menolak versi selain PHP 8.x dengan pesan yang jelas. Label tahap
tes membantu diagnosis kegagalan tanpa menampilkan credential atau exception message.

```sh
cd /home/bikinev2/myinfo
php -v
find backend/config backend/src/Database backend/scripts backend/tests -name '*.php' -exec php -l {} \;
php backend/tests/configuration_test.php
```

Tes konfigurasi memakai fixture sementara dan tidak mengakses database/.env aktual.
Hasil yang diharapkan: `PASS: 20 configuration checks; no database accessed.`

Jika `php -v` masih menampilkan PHP 7.4, jalankan pemilih PHP 8 yang terpasang:

```sh
sh backend/scripts/check_hosting.sh lint
sh backend/scripts/check_hosting.sh
```

Script memverifikasi versi/SAPI aktual kandidat PHP di PATH dan direktori umum
cPanel/CloudLinux, lalu memilih versi PHP 8 tertinggi yang ditemukan. Script tidak
menginstal PHP atau mengubah konfigurasi website/default CLI. Untuk lokasi lain,
gunakan `MYINFO_PHP_BIN=/path/php-yang-dikonfirmasi sh backend/scripts/check_hosting.sh`.
Mode `connection` menjalankan probe yang tetap dibatasi ke environment development.

Pada salinan deployment **development** yang sudah diisi konfigurasi DB valid:

```sh
php backend/scripts/test_connection.php
```

Hasil sukses: `PASS [connection]: database connection successful; prepared statement verified.`
Probe hanya prepared SELECT konstan, tanpa membaca schema atau menulis data.
Exit 0 sukses, 1 gagal generik, 2 bukan development. HTTP ditolak sebelum membaca
konfigurasi. Jangan mengubah APP_ENV deployment production untuk mengaktifkan probe.
Folder tests dan probe development dapat dikeluarkan dari deployment production.

Probe menampilkan kategori aman tanpa isi `.env`: `environment`, `configuration`,
`driver`, `connection`, atau `probe`. Jika kategorinya `connection`, periksa host/port,
nama database dan user lengkap dengan prefix cPanel, password, serta assignment dan
privilege user terhadap database di menu MySQL Databases cPanel.

## Status implementasi dan review

- Scope PT-002: loader, enam parameter DB, PDO native prepared statements, error aman,
  dan probe development CLI tersedia.
- Tidak ada perubahan database/schema, endpoint aplikasi, atau credential production.
- Self-review mencakup prioritas environment, default production, validasi DSN/port,
  native prepares, CLI guard, dan sanitasi exception tanpa driver exception chain.
- Pemeriksaan file/template/tautan dapat dilakukan lokal.
- Tes awal hosting gagal pada PHP CLI 7.4.33. Setelah CLI diubah ke PHP 8.4.26,
  20 tes konfigurasi lulus dan koneksi PDO MySQL/prepared statement berhasil.
  Acceptance criteria dan DoD PT-002 terpenuhi pada 2026-10-08.
- Revisi: version guard pada bootstrap.php/test_connection.php/configuration_test.php,
  diagnostik tes, check_hosting.sh, .gitattributes, AGENTS.md, dan panduan deployment.
- PT-003 tidak dikerjakan.
