Menginstall CodeIgniter 4 dengan Composer, memahami struktur app/Config/ dan file .env, membuat hello world pertama, serta mengatur environment development dan production agar aplikasi berjalan konsisten sejak awal.

Setelah di episode 2 kita memahami arsitektur MVC dan struktur folder, sekarang saatnya hal yang paling ditunggu: menginstall CodeIgniter 4 dan membuat hello world pertama. Ini adalah episode hands-on pertama kalian, dan mulai sekarang setiap konsep akan selalu diikuti kode nyata.
Mengapa instalasi perlu dibahas tersendiri? Karena sebagian besar error di awal belajar CodeIgniter justru berasal dari konfigurasi yang salah — baseURL yang tidak diisi, environment yang keliru, atau .env yang belum disalin. Jika fondasi konfigurasi ini benar, episode 4-26 akan berjalan mulus.
CodeIgniter 4 diinstall lewat template resmi codeigniter4/appstarter. Buka terminal, pindah ke folder tempat project berada, lalu jalankan:
composer create-project codeigniter4/appstarter ci4-app
cd ci4-app
php spark servecomposer create-project mengunduh template, menjalankan autoload Composer, dan menghasilkan struktur yang kita bahas di episode 2. php spark serve menjalankan development server PHP built-in di http://localhost:8080. Buka browser — kalian akan melihat halaman selamat datang CodeIgniter.
Tip
Port 8080 bertabrakan dengan aplikasi lain? Jalankan php spark serve --port 8081 untuk memakai port lain, lalu sesuaikan app.baseURL di .env agar link yang dihasilkan framework sesuai.
Semua konfigurasi inti ada di folder app/Config/. File yang paling sering diutak-atik:
| File | Fungsi |
|---|---|
Config/App.php | Konfigurasi umum: baseURL, timezone, index page |
Config/Database.php | Kredensial & driver database (dibahas episode 6) |
Config/Routes.php | Route aplikasi (dibahas episode 4) |
Config/Filters.php | Middleware CSRF, honeypot, toolbar (episode 19) |
Buka app/Config/App.php — kalian akan melihat property class seperti public string $baseURL = ''; dan public string $indexPage = 'index.php';. Saat project baru dibuat, baseURL masih kosong dan beberapa hal tidak bekerja optimal sampai diisi.
File .env adalah pusat kontrol environment kalian. Template-nya bernama env di root project. Salin dan sesuaikan:
cp env .envSekarang isi bagian teratas dengan environment dan baseURL:
#--------------------------------------------------------------------
# ENVIRONMENT
#--------------------------------------------------------------------
CI_ENVIRONMENT = development
#--------------------------------------------------------------------
# APP
#--------------------------------------------------------------------
app.baseURL = 'http://localhost:8080/'
app.forceGlobalSecureRequests = falseCI_ENVIRONMENT = development menyalakan Debug Toolbar dan menampilkan error detail — wajib saat development. app.baseURL dipakai framework untuk membangun URL (link, redirect, assets). Catatan penting: nilai di .env menimpa config class — jadi kalian bisa mengubah config di App.php atau lewat .env, dan .env selalu menang.
.env, Bukan Edit Config Langsung?Karena .env tidak pernah di-commit ke git (sudah ada di .gitignore). Kredensial database, kunci enkripsi, dan setting environment bisa berbeda antar mesin — developer, staging, produksi — tanpa harus mengubah source code. Ini praktik yang kita perkuat di episode 16 saat deploy.
CodeIgniter sudah menyediakan controller default. Tapi mari buat sendiri agar kalian paham alurnya. Buat file app/Controllers/Hello.php:
<?php
namespace App\Controllers;
class Hello extends BaseController
{
public function index(): string
{
$data = [
'title' => 'Halo dari CodeIgniter',
'message' => 'Environment saya: ' . ENVIRONMENT,
];
return view('hello', $data);
}
}BaseController (dibahas detail di episode 4) menyediakan property seperti $this->request, $this->response, dan $this->helpers. Method index() adalah method default yang dipanggil saat URL tidak menyebutkan method. Nilai ENVIRONMENT adalah konstanta yang diisi dari CI_ENVIRONMENT.
Buat view-nya di app/Views/hello.php:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title><?= esc($title) ?></title>
</head>
<body>
<h1><?= esc($title) ?></h1>
<p><?= esc($message) ?></p>
</body>
</html><?= ... ?> adalah shortcut untuk <?php echo ... ?>, dan esc() memastikan output aman dari XSS (dibahas di episode 8). Sekarang buka http://localhost:8080/hello — server development menangani routing otomatis (auto routing): segmen pertama URL → controller, segmen kedua → method.
Warning
Jika halaman selamat datang tetap muncul di /hello, atau URL berisi index.php, cek dua hal: app.baseURL di .env harus berakhiran /, dan app.indexPage di App.php harus '' (kosong) di development agar URL bersih.
Cara tercepat membedakan environment adalah nilai CI_ENVIRONMENT:
| Aspek | Development | Production |
|---|---|---|
| Error display | Detail + stack trace | Sembunyikan (log saja) |
| Debug Toolbar | Aktif | Nonaktif |
| Cache | TTL pendek / off | Aktif penuh |
| Performance | Terbarat (cache warm) | Dioptimalkan |
Kita akan membahas produksi menyeluruh di episode 16. Untuk sekarang, ingat aturan emasnya: development menampilkan error, production mencatat error ke log — jangan sampai tertukar.
Sebelum lanjut, pastikan semuanya berfungsi:
php spark --version
php spark routes | head -10php spark --version menampilkan versi CI4 (seharusnya 4.7.x), dan php spark routes menampilkan daftar route yang terdaftar — termasuk route /hello yang baru kita buat. Keduanya menandakan framework terinstall dan terautoload dengan benar.
Inti yang harus dibawa pulang:
composer create-project codeigniter4/appstarter, jalankan dengan php spark serve.app/Config/; nilai .env menimpa config class.CI_ENVIRONMENT dan app.baseURL adalah dua setting yang paling sering menjadi sumber error.app/Controllers/, view di app/Views/, akses via /hello.Di episode 4 selanjutnya kita akan membahas routing dan controllers secara mendalam — route pattern dan placeholders, grouping, method routing, BaseController, serta cara mereturn view dan JSON. Pastikan project ci4-app kalian berjalan, karena kita akan banyak memakainya!