CodeIgniter 4

Simple demo of CI4 framework.

Environment

Devuan Chimaera 4.0

Install Apache & PHP

Update

apt update
apt full-upgrade

Install

apt install apache2 php php-cli php-mbstring php-intl php-curl php-json php-mysqlnd php-xml

PHP version

php --version
PHP 7.4.28 (cli) (built: Feb 17 2022 16:17:19) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.28, Copyright (c), by Zend Technologies

Install MySQL

Install MariaDB fork of MySQL.

apt-get install default-mysql-server default-mysql-client

MySQL version

mysql --version
mysql  Ver 15.1 Distrib 10.5.15-MariaDB, for debian-linux-gnu (x86_64) using  EditLine wrapper

Install CI4

Download package and unzip into htdocs.

mkdir -p /var/www/htdocs
cd /var/www/htdocs
wget https://api.github.com/repos/codeigniter4/CodeIgniter4/zipball/v4.2.4 -O ci4.2.4.zip
unzip ci4.2.4.zip
mv codeigniter4-CodeIgniter4-* hostname.kewl.org
cd hostname.kewl.org
chown www-data:www-data writable

Warning: 4.1 would auto-detect routes but this is not the case with 4.2.

Configure apache

<VirtualHost *:80>
    DocumentRoot "/var/www/htdocs/hostname.kewl.org/public"
    ServerName hostname.kewl.org
    ServerAdmin root

    Header append X-FRAME-OPTIONS "SAMEORIGIN"

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* /var/www/htdocs/hostname.kewl.org/public/index.php [L]

    <Directory "/var/www/htdocs/hostname.kewl.org/public">
        Options None
        AllowOverride None
    </Directory>

    CustomLog /var/log/apache2/hostname.kewl.org/access.log combined
    ErrorLog  /var/log/apache2/hostname.kewl.org/error.log
</VirtualHost>

Configure CI4

Change baseURL and indexPage in app config.

vi app/Config/App.php

Change logging threshold if required.

vi app/config/Logger.php

Hello world

Controller
vi app/Controllers/Hello.php
<?php

namespace App\Controllers;

class Hello extends BaseController
{
    public function index()
    {
        echo view('Hello');
    }
}
?>
Index view
vi app/Views/Index.php
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Index</title>
</head>
<body>

<!--Content start-->
<?=$this->renderSection("Content")?>
<!--Content end-->

</body>
</html>
Controller view
vi app/Views/Hello.php
<?php
    $this->extend("Index");
    $this->section("Content");
    phpinfo();
    $this->endSection();
?>
Route

vi app/Config/Routes.php

$routes->get('/Hello', 'Hello::index');
URL
http://hostname.kewl.org/Hello

Resources

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies