VERSI 4.0.0 · MINIMAL PHP 8.4

Salin patch, buka aplikasi.

Pembaruan ini ditujukan untuk ZIP undanganpernikahan(1).zip terbaru yang Anda kirim. Ada jalur SQLite agar instalasi baru tetap bisa berjalan saat InnoDB menolak penulisan dengan error 1005/165. Pengaturan dan database MySQL lain tidak diubah.

  1. Ekstrak ZIP pembaruan ini.
  2. Salin seluruh isinya ke folder aplikasi yang sudah berisi index.php, misalnya C:\xampp\htdocs\undanganpernikahan\. Gabungkan folder; ganti hanya file bernama sama yang disertakan. Pertahankan folder konfigurasi dan foto.
  3. Jalankan Apache dengan PHP 8.4+, lalu buka kembali http://localhost/undanganpernikahan/install.php atau alamat utama aplikasi.

Tidak perlu impor SQL melalui phpMyAdmin. Pada kondisi MySQL hanya-baca dan database aplikasi masih kosong, installer lokal memilih SQLite otomatis dan membuka halaman masuk. Jika pemasangan otomatis belum dapat menentukan pilihan dengan aman, tombol Pasang tanpa MySQL menyediakan pemasangan SQLite dalam satu klik.

Yang berubah pada kondisi error Anda

Error errno 165: Table is read only menunjukkan mesin MySQL menolak penulisan. Jalur baru menyimpan data aplikasi di SQLite privat. Aplikasi tidak menonaktifkan innodb_force_recovery, mengubah read_only, menyunting my.ini, menghapus berkas InnoDB, atau menjalankan ulang layanan MySQL.

Peralihan otomatis lokal dibatasi pada instalasi baru tanpa konfigurasi, nama database otomatis, dan database MySQL yang terverifikasi belum memiliki tabel. Jika konfigurasi MySQL sudah ada, konfigurasi tersebut tetap digunakan. Jika ada tabel lama, installer tidak mengalihkan data secara diam-diam. Pemilihan SQLite secara manual juga tidak menyalin atau menghapus data MySQL.

Localhost dan hosting

SQLite memerlukan PDO SQLite pada PHP dan folder privat yang dapat ditulis. Pengguna tidak perlu membuat database, username, password, atau mengatur URL untuk jalur ini. Tanpa PDO SQLite, aplikasi menampilkan keterbatasan tersebut dan tetap menyediakan jalur MySQL yang dapat ditulis. PHP tidak dapat mengaktifkan driver server yang dinonaktifkan oleh penyedia.

Hosting baru tanpa konfigurasi atau variabel koneksi MySQL dapat memasang SQLite otomatis jika persyaratannya tersedia. Bila hosting menggunakan akun MySQL yang sudah disediakan, isikan akun tersebut sekali atau gunakan variabel lingkungan dari versi sebelumnya. Hosting yang sudah terpasang cukup menerima file patch; database dan konfigurasi tidak diganti.

Jalur URL, domain utama, dan subfolder tetap terdeteksi otomatis. Profil localhost/hosting dan config/local.php lama tetap didukung. Tidak perlu Composer, build, atau pengaturan RewriteBase.

Data SQLite disimpan secara privat

Berkas SQLite disimpan di luar folder publik web, pada folder undangan-data-private di sisi folder webroot. Pada XAMPP dengan webroot C:\xampp\htdocs, lokasinya berada di bawah C:\xampp\undangan-data-private. Lokasi lengkap tercatat sebagai db_file pada konfigurasi hasil pemasangan.

Jangan menghapus folder data privat atau menyalinnya sebagai file patch. Data tersebut adalah database aktif aplikasi. Saat memperbarui, cukup salin file patch; akun, undangan, ucapan, dan foto tetap dipertahankan. Menyalin file aplikasi ke mesin lain tidak otomatis memindahkan data database. Jika berkas database yang sudah terpasang hilang, aplikasi berhenti dengan pesan jelas dan tidak membuat pengganti kosong.

Isi patch

Empat file lama diperbarui: app/platform.php, app/setup.php, install.php, dan petunjuk ini. Dua modul baru: app/sqlite.php dan app/mysql_state.php. Modul akun, dashboard, repository, validasi, undangan, tampilan, tema, CSS, JavaScript, index, serta bootstrap dipertahankan.

database.sqlite.sql adalah skema baru untuk backend SQLite dan diimpor otomatis oleh installer. Jangan impor file ini ke MySQL/phpMyAdmin. Struktur dan berkas database.sql MySQL asli tidak diubah. Tetap salin semua file patch termasuk SQL SQLite agar pemasangan otomatis dapat berjalan.

Hasil pengujian

Diuji pada PHP 8.4.24, MariaDB 10.11.14, dan SQLite 3.45.1 di Linux. MySQL benar-benar dijalankan dengan InnoDB hanya-baca sehingga error 1005/165 dapat direproduksi; pemasangan SQLite berhasil dan pengaturan MySQL tetap sama. Mode innodb_force_recovery=6 juga diuji.

Seluruh 33 pengujian HTTP asli lulus pada MySQL normal dan pada SQLite: akun, login, undangan, tiga tema, RSVP, kepemilikan, dan foto. Pengujian tambahan memeriksa rollback transaksi, batas 12 foto saat dua proses menyimpan bersamaan, foreign key/cascade, rate limit, kerahasiaan lokasi database, pemasangan hosting tanpa akun MySQL, pemasangan satu klik tanpa driver MySQL, dan pelestarian data saat file patch disalin.

Pemasangan langsung pada komputer Windows XAMPP atau hosting Anda belum dapat dijalankan dari sini. Jika server tidak menyediakan PDO SQLite atau menolak penulisan di folder privat, installer menyatakannya dan tidak menampilkan keberhasilan palsu. Persyaratan MySQL hanya-baca tidak dapat dilewati dengan backend MySQL itu sendiri.

Buka pemasangan → Buka aplikasi