勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

CodeIgniter4.4.4のインストールからHello Worldページ表示まで行う方法

   2024/07/19  PHP CodeIgniter

以前CodeIgniter3を勉強したことがあったが新バージョンの4系がリリースされているようなのでインストールからHello Worldページ表示までを行いたい。以下に対応内容のメモ。

 

作業環境

  • mysql 8.0.32
  • PHP 7.4.29
  • CentOS 7.9.2009

 

公式サイト

ユーザーガイド

https://ci-trans-jp.gitlab.io/user_guide_4_jp/

ダウンロードページ

https://codeigniter.com/download

上記ページから4系をダウンロードしておく。

 

インストールまで

ディレクトリ作成

CodeIgniterをインストールするディレクトリを作成する。今回は例として「/var/www/html/codeigniter4/」というディレクトリとする。

ファイルのアップロード

ダウンロードページで入手したファイルを解凍し、codeigniter4ディレクトリにアップロードする。

パーミッションの変更

この時点で「ドメイン/codeigniter4/」をブラウザで開くと「Fatal error: Uncaught CodeIgniter\Cache\Exceptions\CacheException: Cache unable to write to "/var/www/html/codeigniter4/writable/cache/」というエラーが発生した。

こちらのページを参考に「/var/www/html/codeigniter4/writable/cache/」ディレクトリのパーミッションを777に変更することで解決した。

PHP intlのインストール(インストール済みの場合は不要)

この時点で再度ブラウザで開くと「SYSTEMPATH/CodeIgniter.php at line 252」「SYSTEMPATH/CodeIgniter.php : 252 — CodeIgniter\Exceptions\FrameworkException::forMissingExtension () 」「FCPATH/index.php : 68 — CodeIgniter\CodeIgniter->initialize () 」という3つのエラーが表示される。

こちらのページを見たところPHP intlがインストールされていない際に当該エラーになるっぽい。

こちらのページを参考に以下の通りPHP intlをインストールする。

#導入可能なintlを検索
yum list | grep intl

#バージョンを合わせてintlをインストール
yum install -y php74-php-intl.x86_64

#php.ini編集
vi /etc/php.ini

#以下を追記する
extension=/opt/remi/php74/root/usr/lib64/php/modules/intl.so

#apacheの再起動
systemctl restart httpd

設定ファイルの変更

CodeIgniterをインストールしたディレクトリに「env」というファイルがあるので「.env」にリネームし、ダウンロードする。以下を追記した上で再度アップロードする。

CI_ENVIRONMENT = development

「development」は開発環境用で「production」は本番環境用になる。

また、baseURLを設定するため以下を追記する(URL部分は適宜変更)。

app.baseURL = 'https://test.com/codeigniter4/'

baseURLを設定しないとページ表示が非常に遅くなる。最初は開発環境のため何らかのデバッグ処理が走っているのかと思ったけどそうじゃないみたい。

.htaccessファイルの作成

以下を記述した.htaccessファイルをCodeIgniterをインストールしたディレクトリにアップロードする。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

<FilesMatch "^\.">
    Require all denied
    Satisfy All
</FilesMatch>

この時点で「ドメイン/codeigniter4/」をブラウザで開くと以下のようなページが表示されインストール完了となる。

 

Hello Worldページ表示まで

Viewsファイル

「/app/Views」に以下を記述したファイルをアップロードする。尚、ファイル名はHelloWorld.phpとする。

<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hello wold</title>
</head>
<body>
    <h1>hello wold</h1>
</body>
</html>

Controllersファイル

「/app/Controllers」に以下を記述したファイルをアップロードする。尚、ファイル名はHelloWorld.phpとする。

<?php
namespace App\Controllers;

class HelloWorld extends BaseController
{
    public function index(): string
    {
        return view('HelloWorld');
    }
}

ルーティング設定

「/app/Config/Routes.php」のファイルに以下を追記しアップロードする。

$routes->get('/HelloWorld', 'HelloWorld::index');

この時点で「ドメイン/codeigniter4/test_project/HelloWorld」をブラウザから開くとViewsで設定したファイルが表示される。

 

所感

久しぶりにフレームワークを触ったけどHello Worldページ表示まで結構大変だった。この後は以前3系で対応したことをおさらいしつつ「お問い合わせフォーム作成」「ダッシュボードを作成しそちらで登録したデータをフロント側で表示」等、業務でよく使いそうなところを勉強しておきたいところ。

 - PHP CodeIgniter

  関連記事

CodeIgniter3でログをファイルに出力する方法

Codeigniter3でエラーログの設定を行い特定のファイルに出力させ当該ログ ...

CodeIgniter4で簡易版ログインシステムの実装方法(管理画面向け)

CodeIgniter4で管理画面向けの簡易版ログインシステムを作成したい。通常 ...

CodeIgniter3で共通の変数と定数を設定する方法

CodeIgniter3系で共通する配列が入った変数と、定数を設定したかった。以 ...

CodeIgniter4でCronを実行する方法

CodeIgniter4.4.4で特定の処理をCronで自動実行させたい。以下に ...

CodeIgniter4でフォームからファイルをアップロードし保存する方法

CodeIgniter4.4.4でformから画像等のファイルをアップロードし、 ...