Cara Update CodeIgniter di Hosting

Hai, Sobat Jagoan! CodeIgniter adalah salah satu framework PHP yang ringan dan cocok digunakan untuk mengembangkan aplikasi web dengan struktur yang sederhana namun rapi. Dari waktu ke waktu, CodeIgniter terus melakukan pembaruan fitur agar tetap relevan, semakin mudah digunakan, dan membantu proses pengembangan aplikasi menjadi lebih efisien.

Artikel kali ini akan membahas cara melakukan update CodeIgniter di hosting. Terdapat 2 skenario yang dibahas yaitu cara update CI versi 4.5.0 ke versi 4.6.1 dan update versi 3.1.11 ke versi 4.5.0. Nah, selengkapnya simak langsung di bawah ini.

Cara Update CodeIgniter 3.1.13 ke versi CodeIgniter 4.5.0

Mengupdate CodeIgniter versi 3 ke CodeIgniter versi 4 bukan update biasa, tapi migrasi besar karena strukturnya berbeda total. Jadi kamu tidak bisa hanya dengan mengganti file, tapi perlu menyesuaikan logika aplikasi dari CodeIgniter 3 ke CodeIgniter 4 secara bertahap.

code-igniter-3

STEP 1: Backup aplikasi CodeIgniter lama menjadi .zip lalu kamu bisa unduh dan menyimpan backup-nya di komputer lokal supaya lebih aman.

STEP 2: Kemudian backup databasenya juga dengan cara mengeksport dari phpMyAdmin. Kamu bisa mengikut artikel Export dan Import Database Pada Hosting untuk melakukan backup database di hosting.

Penting!

Artikel ini menggunakan skenario update seperti ini, Sob:

  • Aplikasi CodeIgniter 3 berada di root subdomain: ciapp.domain.com
  • Strukturnya seperti berikut:
				
					/home/username/
├── public_html/
├── ciapp.domain.com/       ← subdomain CI3
│   ├── application/
│   ├── system/
│   ├── dll
				
			
  • Tapi, update kali ini tetap ingin menggunakan subdomain lama tersebut
  • Jadi, nanti akan membuat folder di luar subdomain lama bernama ci4app, seperti ini strukturnya:
				
					/home/username/
├── public_html/
├── ciapp.domain.com/       ← subdomain CI3
├── ci4app/                 ← ini folder untuk proyek CI4
				
			
  • Supaya bisa tetap mengakses melalui ciapp.domainkamu.com setelah CodeIgniter diupgrade versinya maka akan mengarahkan direktori root subdomain tersebut ke folder ci4app.
  • Ok, mari langsung mengimplementasikan skenario ini supaya kamu tidak bingung.

STEP 3: Lalu, buka terminal untuk melakukan instal CodeIgniter 4.5.0 melalui composer di dalam folder ci4app menggunakan perintah berikut:

				
					composer create-project --no-dev codeigniter4/appstarter . "4.5.0"
composer require codeigniter4/framework "4.5.0"

				
			

Pastikan versi PHP kamu ketika akan migrasi ke CodeIgniter 4 adalah minimal 7.4 atau untuk lebih aman pakai 8.0 ke atas. Kalau kamu menggunakan hosting dari Jagoan Hosting, silahkan mengikut artikel Cara Mengubah Versi PHP di Cpanel untuk mengubah versi PHP.

Setelah instalasi selesai, periksa versi CodeIgniter dengan menjalankan perintah berikut di terminal:

				
					php spark --version
				
			

STEP 4: Kemudian, rename file env menjadi .env (tambah titik didepan) lalu Edit file tersebut dan atur konfigurasi pada bagian berikut sesuai dengan environment proyek kamu. Jika sudah klik Save Changes di kanan atas.

				
					#--------------------------------------------------------------------
# ENVIRONMENT
#--------------------------------------------------------------------

CI_ENVIRONMENT = production

#--------------------------------------------------------------------
# APP
#--------------------------------------------------------------------

app.baseURL = 'https://ciapp.domain.com/'
# If you have trouble with `.`, you could also use `_`.
# app_baseURL = ''
# app.forceGlobalSecureRequests = false
# app.CSPEnabled = false

#--------------------------------------------------------------------
# DATABASE
#--------------------------------------------------------------------

database.default.hostname = localhost
database.default.database = db-ci
database.default.username = db-user
database.default.password = db-password
database.default.DBDriver = MySQLi
database.default.DBPrefix =
database.default.port = 3306

				
			

STEP 5: Karena struktur folder CI 3 dan CI 4 berbeda, selanjutnya migrasikan struktur folder.

CodeIgniter 3

CodeIgniter 4

application/controllers/

app/Controllers/

application/models/

app/Models/

application/views/

app/Views/

Contoh:

  • Controller Mahasiswa.php di CI 3:
				
					// CI3: application/controllers/Mahasiswa.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');

class Mahasiswa extends CI_Controller
{

	public function __construct()
	{
		parent::__construct();
		$this->load->model('Mahasiswa_model');
		$this->load->helper('url');
	}

	public function index()
	{
		$data['mahasiswa'] = $this->Mahasiswa_model->get_all();
		$this->load->view('v_mahasiswa', $data);
	}

	// Form tambah
	public function tambah()
	{
		if ($this->input->post()) {
			$data = [
				'nim' => $this->input->post('nim'),
				'nama' => $this->input->post('nama'),
				'jurusan' => $this->input->post('jurusan'),
			];
			$this->Mahasiswa_model->insert($data);
			redirect('mahasiswa');
		}
		$this->load->view('v_tambah');
	}
}

				
			

Controller migrasi ke CI 4:

				
					// CI4: app/Controllers/Mahasiswa.php
<?php

namespace App\Controllers;

use App\Models\MahasiswaModel;

class Mahasiswa extends BaseController
{
    protected $mahasiswaModel;

    public function __construct()
    {
        $this->mahasiswaModel = new MahasiswaModel();
        helper(['form', 'url']);
    }

    public function index()
    {
        $data['mahasiswa'] = $this->mahasiswaModel->findAll();
        return view('v_mahasiswa', $data);
    }

    public function tambah()
    {
        return view('v_tambah');
    }

    public function simpan()
    {
        $this->mahasiswaModel->save([
            'nim' => $this->request->getPost('nim'),
            'nama' => $this->request->getPost('nama'),
            'jurusan' => $this->request->getPost('jurusan'),
        ]);
        return redirect()->to('/mahasiswa');
    }
}

				
			

Dokumentasi tentang controller CI 4.5.0 di Controller

  • Model mahasiswa dari CI 3:
				
					// CI3: application/models/Mahasiswa_model.php
<?php
class Mahasiswa_model extends CI_Model
{
	function get_all()
	{
		return $this->db->get('mahasiswa')->result();
	}

	function insert($data)
	{
		$this->db->insert('mahasiswa', $data);
	}

	function get_by_id($id)
	{
		return $this->db->get_where('mahasiswa', ['id' => $id])->row();
	}
}

				
			

Migrasi model pada CI 4:

				
					// CI4: app/Models/MahasiswaModel.php
<?php

namespace App\Models;

use CodeIgniter\Model;

class MahasiswaModel extends Model
{
    protected $table = 'mahasiswa';
    protected $primaryKey = 'id';
    protected $allowedFields = ['nim', 'nama', 'jurusan'];
}

				
			

Dokumentasi model CI 4.5.0 bisa diakses pada Models

  • File view dari CI 3 yang berada di applications/views/ bisa langsung dipindahkan ke app/Views pada CI 4. Tapi pastikan gunakan sintaks php standar <?= ?>, dan pastikan base_url() atau site_url() dipanggil di helper url pada controller.

STEP 6: Berikutnya atur routing di CodeIgniter 4 pada folder app/Config/Routes.php. Contohnya seperti berikut:

				
					$routes->get('/mahasiswa', 'Mahasiswa::index');
$routes->get('/mahasiswa/tambah', 'Mahasiswa::tambah');
$routes->post('/mahasiswa/simpan', 'Mahasiswa::simpan');

				
			

Panduan resmi mengenai routing di CodeIgniter 4.5.0 bisa kamu baca melalui Routing

STEP 7: Setelah memastikan semua migrasi disesuaikan, login ke cPanel dan masuk menu Domains. Pada domain yang kamu gunakan, klik Manage.

4-klik-manage-domain

Ubah path domain root agar mengarah ke folder CodeIgniter 4 yaitu ci4app/public sebagai entry point aplikasi CodeIgniter 4. Setelah path sesuai klik Update.

5-update-domain-root

Tunggu beberapa saat sampai pesan sukses muncul yang menandakan bahwa berhasil mengubah path.

6-sukses-update-root-domain

STEP 8: Terakhir akses ciapp.domain.dom untuk melihat hasil migrasi yang sudah dilakukan dan memastikan website berfungsi dengan baik.

7-akses-web-setelah-migrasi

Cara Update CodeIgniter 4.5.0 ke CodeIgniter 4.6.1

Proses update ini lebih sederhana dibandingkan upgrade besar dari versi berbeda (misalnya dari CodeIgniter 3 ke 4), karena masih berada dalam seri CodeIgniter 4.x.

Versi 4.6.1 sendiri membawa beberapa perbaikan bug, peningkatan performa, dan penambahan fitur kecil. Kamu tidak perlu memindahkan banyak file secara manual, cukup melakukan update melalui Composer dan menyesuaikan beberapa pengaturan jika diperlukan.

STEP 1: Backup aplikasi CodeIgniter 4.5.0 menjadi .zip lalu kamu bisa unduh dan menyimpan backup-nya di komputer lokal supaya lebih aman.

STEP 2: Kemudian backup databasenya juga dengan cara mengeksport dari phpMyAdmin. Kamu bisa mengikut artikel Export dan Import Database Pada Hosting untuk melakukan backup database di hosting.

STEP 3: Apabila sebelumnya kamu menginstal proyek 4.5.0 menggunakan composer maka untuk mengupgrade-nya kamu perlu mengubah bagian codeigniter4/framework di file composer.json menjadi:

				
					"codeigniter4/framework": "4.6.1",
				
			

STEP 4: Setelah mengubah composer.json, berikutnya buka terminal lalu arahkan ke folder proyek CI kamu lalu update composer.

				
					cd ci4app
composer update --no-dev

				
			

Catatan: Sertakan –no-dev jika kamu tidak ingin mengunduh library tambahan untuk development seperti faker, phpunit, dan lainnya.

STEP 5: Lalu, jalankan perintah di bawah ini untuk melihat apakah versi CodeIgniter sudah berubah.

				
					php spark --version
				
			
10-php-spark-version

Apabila muncul pesan error seperti ini:

“Undefined constant Kint\\Renderer\\AbstractRenderer::SORT_FULL”

Itu error-nya berasal dari file app/Config/Kint.php, tepatnya karena kamu masih menggunakan konstanta lama (SORT_FULL) yang sudah tidak tersedia di versi baru CodeIgniter 4.6.1.

Solusinya:

  1. Buka file app/Config/Kint.php
  2. Cari baris yang mirip dengan: public $sort = \Kint\Renderer\AbstractRenderer::SORT_FULL
  3. Lalu ganti dengan:
				
					public $sort = null;
				
			
11-setting-kint-php

Setelah diperbaiki, klik Save Changes dan jalankan kembali perintah untuk melihat versi CodeIgniter.

STEP 6: Setelah kamu berhasil melakukan update, CodeIgniter tidak akan langsung mengubah isi folder app/Config/ milikmu. Hal ini dilakukan agar pengaturan yang sudah kamu sesuaikan sebelumnya tidak hilang atau tertimpa. Namun, bisa jadi ada file konfigurasi bawaan CodeIgniter yang berubah atau ditambahkan di versi terbaru, seperti App.php, Filters.php, atau Kint.php dan lainnya.

Jadi, bandingkan file-file di folder app/Config/ milikmu dengan file-file bawaan versi terbaru yang ada di vendor/codeigniter4/framework/app/Config/.

Jika kamu menemukan adanya pengaturan baru atau perubahan penting, tambahkan secara manual ke file milikmu. Namun, jangan langsung menyalin dan menimpa seluruh file dari folder vendor/, karena itu bisa menghapus pengaturan yang sudah kamu buat sebelumnya.

STEP 7: Setelah selesai, buka akses situs proyek kamu di web browser untuk memeriksa aplikasi berjalan normal setelah diupdate.

codeigniter-versi-4

Waw, gimana, Sob? Apakah ada kendala saat proses update Codeigniter di hosting? Kalau ada yang masih bikin bingung, jangan ragu hubungi Tim Support Jagoan Hosting ya, Sob!

Related Posts
Cara Install CodeIgniter di Softaculous cPanel

Hai, Sobat Jagoan! Softaculous adalah fitur auto-installer yang biasanya tersedia di cPanel dan digunakan untuk memasang berbagai aplikasi web secara Read more

Cara Install CodeIgniter dengan Composer di cPanel Hosting

Hai, Sobat Jagoan! Saat kamu mengembangkan proyek CodeIgniter, menggunakan Composer adalah langkah terbaik. Selain mendapatkan versi resmi terbaru, kamu juga Read more

Clone Proyek CodeIgniter dari Remote Repository ke Hosting

Halo, Sobat! Remote repository adalah tempat penyimpanan proyek kamu di server Git yang bisa diakses dari mana saja melalui internet. Read more

Memahami Konsep Dasar CodeIgniter 4

Hai, Sobat Jagoan! Sebelum nyemplung lebih jauh dengan CodeIgniter versi 4, kamu perlu mengenal dan memahami konsep dasar CodeIgniter 4 Read more