Codeigniter 4をインストールした後に行う手順について
この記事は2023/10/01に作成されました。
はじめに
Codeigniter 4はなるべく制作者の手間を省くように作られていますが、それでも自分で設定をおこわななければならないポイントはいくつかあります。
そんなCodeigniter 4をインストールした直後にやるべき設定ファイルの操作についてまとめました。
1.app/Config/App.phpの設定
この場所ではサイト基本的な設定を行います。
そもそもここを設定しないとアクセスすらできないので、一番最初に行いましょう。
■$baseURL の設定
サイトのURLを指定します。これを正しく指定しないと、まずサイトにアクセスできません。
ただし、この設定は後記する.envファイルでも指定する方が便利でしょう。
■$indexPage の設定
デフォルトでは'index.php'と指定されています。
このままですと、このサイトのあらゆるURLに「index.php」が付与されます
(例えば、「userpage」というURLを作りたいと思った場合も、「example.com/index.php/userpage」という形になってしまいます。)
特別な理由がなければ、$indexPage = ''と空文字を指定しておくべきでしょう。
■$timezone の設定
デフォルトではアメリカ時間となっているので、日本時間に合わせましょう。
これを日本時間にしない場合、時刻の取得、表示などがアメリカ時間になりズレてしまいます。
■$CSRFHeaderName の設定
CSRFに使用する名前を設定します。後記するCSRF設定のときに必要です。
デフォルトネームでも動作はしますが、攻撃されにくくするように何かしら別の名前を設定した方が良いでしょう。
2.app/Config/Autoload.phpの設定
Autoload.phpでは「自動でclassやhelperを読み込む設定」を行う事ができます。
これの何が良いのかというと、例えばCodeigniter 4においてフォーム機能を使用するためには
毎回各ファイルでフォームヘルパーの読み込みを行う必要があります。
しかし、Autoloadで読み込むことで、自動ロードが成されるようになるため、その手間がなくなります。
どのページでも使用するようなhelper、他機能があれば、自動で読み込むようにしましょう。
3.app/Config/Database.phpの設定
データベースを使用するサイトであれば、ここで設定を行う必要があります。
しかしこちらも後記する「.envファイル」による設定でも可能ですので、そちらに移した方がいいでしょう。
4.app/Config/Filters.phpの設定
Filters.phpでは「フィルタリング」の設定を行うことができます。
「フィルタリング」とは、リクエストやレスポンスの前後に特定の処理を挟み込むことができる機能で、各種ログイン認証やセキュリティ対策で使用できます。
ここでまずすべきことは、CSRFの設定です。
$globals の 配列'before'の中に'csrf'を設定することで有効化されます。
CSRFをONにすると、フォームのPOSTにおいて「CSRFトークンを含むもの」のみ受け付けるようになります。
これによりユーザーによるログインセッションを第三者が悪用しての攻撃などを防ぐことができます。
この設定により、form_open()を利用したときにcsrfトークンを自動で含むようになる(=見えない形、form_hiddenにより一緒にtokenを送るようになる)なります。
逆に、form_openを使用せず、通常の<form>などを書く形だとトークンが含まれない、代わりにトークンの取得・送信を行うフォームを自分で設定しなければいけないので気をつけましょう。
また、CSRFトークンの設定以外にも、例えば独自のログイン認証ライブラリを作成したときなど、
同じく'before'に指定することで毎回動作させることができます。
5.app/Config/Routes.phpの設定
かつてのCodeigniterでは、自動ルーティングが行われていました。
これは「controllerにファイル、及びmethodを描くと、自動的にそこにつながるURLが生成される」というものです。
例を挙げると、controllerフォルダに「Test.php」というファイルを作り、「check」というメソッドを記載した場合、自動で「example.com/Test/check」というURLでアクセスできるようになります。
しかし、この設定はセキュリティ上の問題から、Codeignite4・Ver4.2.0で無効化され、Routes.phpファイル上にURLを自分で書き込まければいけなくなりました。
($routes->setAutoRoute(true); と記載することで、この機能をONにすることもできますが、推奨はされません。)
ページを新たに作るたびに記載していく必要がありますが、
インストール直後にはまずデフォルトコントローラーの設定を行いましょう。
$routes->setDefaultController('◯◯');に好きなファイル名(controllerフォルダの中に存在するもの)を指定する事で、TOPページのURLを変更することができます。
6.envファイルによる設定について
Codeigniter 4に限らず、様々なフレームワークで使用できる「.env」というファイルが存在します。
これは様々な設定をCodeigniterのファイル外におけるというものです。
これによって何が良いのかというと、環境によって設置する.envファイルを変更することによりデータベースの指定先などさまざまな設定の切り替えがスムーズに可能です。
主にこのファイルで行うことは、app/config内のデータの書き換え(上書き)です。
例を挙げると、app.baseURL = 'https://example.com/' のように記載すると、
app/Config/app.phpの中の$baseURL設定を上書きすることができます。(上書きなので、.env側が常に優先されます)
テスト環境と本番環境によって別々のデータが必要になるもの、例えばサイトURLやdatabaseの設定などは.envファイル側で行うと良いでしょう。
また、CodeIgniter 4 ではenv()関数を利用
することで好きなデータを読み出す事ができます。
例として、TEST_DATA = 'TEST'といった記述を.envに追加した場合、
$test= env('TEST_DATA ');
echo $test
と指定することで、「TEST」という値をロードすることができます。
そのため、Codeigniterの設定に基づくファイルに限らず、環境によって変わる値が必要であれば.envファイルに記載することができます。
以上の設定にて、基本的なCodeigniter4の設定が完成したかと思います。
インストール直後の操作に関しては忘れがちなので、本記事が何らかの助けになれば幸いです。
プログラマー/S.Y