Table of Contents
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