アプリケーションの実行
CodeIgniter 4 アプリケーションは、Web サーバーでのホスティング、仮想化の使用、CodeIgniter のコマンドラインツールを使用したテストなど、さまざまな方法で実行できます。このセクションでは、各手法の使用方法と、それぞれの長所と短所について説明します。
重要
ファイル名の大文字と小文字には常に注意してください。多くの開発者は、Windows や macOS の大文字と小文字を区別しないファイルシステムで開発を行っています。ただし、ほとんどのサーバー環境では、大文字と小文字を区別するファイルシステムが使用されています。ファイル名の大文字と小文字が正しくない場合、ローカルで動作するコードがサーバーで動作しません。
CodeIgniter を初めて使用する場合は、ユーザーガイドの はじめに セクションを読んで、動的な PHP アプリケーションの作成方法を学習してください。楽しんでください!
初期設定
サイト URI の設定
テキストエディタで **app/Config/App.php** ファイルを開きます。
- $baseURL
ベース URL を
$baseURL
に設定します。より柔軟性が必要な場合は、.env ファイル内でapp.baseURL = 'http://example.com/'
として baseURL を設定できます。 **ベース URL には常に末尾にスラッシュを使用してください!**注記
baseURL
を正しく設定しないと、開発モードではデバッグツールバーが正しく読み込まれず、Web ページの表示にかなり時間がかかる場合があります。
- $indexPage
サイト URI に **index.php** を含めたくない場合は、
$indexPage
を''
に設定します。この設定は、フレームワークがサイト URI を生成するときに使用されます。注記
**index.php** を含まない URL でサイトにアクセスするには、Web サーバーを設定する必要がある場合があります。 CodeIgniter の URL を参照してください。
データベース接続設定
データベースを使用する場合は、テキストエディタで **app/Config/Database.php** ファイルを開き、データベース設定を行います。または、**env** ファイルで設定することもできます。
開発モードの設定
本番サーバーでない場合は、提供されているデバッグツールを利用するために、**.env** ファイルで CI_ENVIRONMENT
を development
に設定します。 詳細は、開発モードの設定 を参照してください。
重要
本番環境では、エラー表示やその他の開発専用の機能を無効にする必要があります。 CodeIgniter では、環境を「production」に設定することでこれを行うことができます。デフォルトでは、アプリケーションは「production」環境を使用して実行されます。 ENVIRONMENT 定数 も参照してください。
書き込み可能フォルダのパーミッション設定
Web サーバー (例:Apache または nginx) を使用してサイトを実行する場合は、プロジェクト内の **writable** フォルダのパーミッションを変更して、Web サーバーが使用するユーザーまたはアカウントが書き込みできるようにする必要があります。
ローカル開発サーバー
CodeIgniter 4 には、PHP の組み込み Web サーバーと CodeIgniter ルーティングを活用したローカル開発サーバーが付属しています。 メインディレクトリで次のコマンドラインを使用して起動できます
php spark serve
これによりサーバーが起動し、ブラウザで https://:8080 にアクセスしてアプリケーションを表示できるようになります。
注記
組み込み開発サーバーは、ローカル開発マシンでのみ使用する必要があります。 本番サーバーでは使用しないでください。
単なる localhost 以外のホストでサイトを実行する必要がある場合は、最初に **hosts** ファイルにホストを追加する必要があります。 ファイルの正確な場所は、主要なオペレーティングシステムごとに異なりますが、すべての Unix タイプのシステム (macOS を含む) では、通常、ファイルは **etc/hosts** に保存されます。
ローカル開発サーバーは、3 つのコマンドラインオプションでカスタマイズできます
--host
CLI オプションを使用して、アプリケーションを実行する別のホストを指定できますphp spark serve --host example.dev
デフォルトでは、サーバーはポート 8080 で実行されますが、複数のサイトを実行している場合や、既に別のアプリケーションがそのポートを使用している場合があります。
--port
CLI オプションを使用して、別のポートを指定できますphp spark serve --port 8081
--php
CLI オプションを使用して、使用する PHP の特定のバージョンを指定することもできます。その値は、使用する PHP 実行可能ファイルのパスに設定しますphp spark serve --php /usr/bin/php7.6.5.4
Apache でのホスティング
CodeIgniter4 Web アプリは、通常、Web サーバーでホストされます。 Apache HTTP Server は「標準」プラットフォームであり、ドキュメントの多くで想定されています。
Apache は多くのプラットフォームにバンドルされていますが、Bitnami からデータベースエンジンと PHP を含むバンドルとしてダウンロードすることもできます。
メイン設定ファイルの設定
mod_rewrite の有効化
「mod_rewrite」モジュールは、URL から「index.php」を省略することを可能にし、このユーザーガイドでは有効化されていることを前提としています。
メイン設定ファイル(例:apache2/conf/httpd.conf)で、rewrite モジュールが有効になっている(コメントアウトされていない)ことを確認してください。
LoadModule rewrite_module modules/mod_rewrite.so
ドキュメントルートの設定
また、デフォルトのドキュメントルートの <Directory>
要素でも、AllowOverride
設定でこれが有効になっていることを確認してください。
<Directory "/opt/lamp/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
VirtualHost を使用したホスティング
アプリを実行するには、「バーチャルホスティング」を使用することをお勧めします。作業するアプリごとに異なるエイリアスを設定できます。
vhost_alias_module の有効化
メイン設定ファイル(例:apache2/conf/httpd.conf)で、バーチャルホスティングモジュールが有効になっている(コメントアウトされていない)ことを確認してください。
LoadModule vhost_alias_module modules/mod_vhost_alias.so
ホストエイリアスの追加
通常、Unix 系プラットフォームでは /etc/hosts、Windows では c:WindowsSystem32driversetchosts にある「hosts」ファイルにホストエイリアスを追加します。
ファイルに1行追加します。たとえば、myproject.local
または myproject.test
などです。
127.0.0.1 myproject.local
VirtualHost の設定
バーチャルホスティング設定ファイル(例:apache2/conf/extra/httpd-vhost.conf)内に、Web アプリ用の <VirtualHost>
要素を追加します。
<VirtualHost *:80>
DocumentRoot "/opt/lamp/apache2/myproject/public"
ServerName myproject.local
ErrorLog "logs/myproject-error_log"
CustomLog "logs/myproject-access_log" common
<Directory "/opt/lamp/apache2/myproject/public">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
上記の設定は、プロジェクトフォルダが以下のように配置されていることを前提としています。
apache2/
├── myproject/ (Project Folder)
│ └── public/ (DocumentRoot for myproject.local)
└── htdocs/
Apache を再起動します。
テスト
上記の設定では、Web アプリにはブラウザで URL http://myproject.local/ を使用してアクセスできます。
Apache の設定を変更するたびに、Apache を再起動する必要があります。
サブフォルダを使用したホスティング
サブフォルダを使用して https:///myproject/ のような baseURL を使用したい場合は、3 つの方法があります。
シンボリックリンクの作成
htdocs が Apache のドキュメントルートである場合、プロジェクトフォルダを以下のように配置します。
├── myproject/ (project folder)
│ └── public/
└── htdocs/
htdocs フォルダに移動し、以下のようにシンボリックリンクを作成します。
cd htdocs/
ln -s ../myproject/public/ myproject
エイリアスの使用
htdocs が Apache のドキュメントルートである場合、プロジェクトフォルダを以下のように配置します。
├── myproject/ (project folder)
│ └── public/
└── htdocs/
メイン設定ファイル(例: **apache2/conf/httpd.conf**)に以下を追加します。
Alias /myproject /opt/lamp/apache2/myproject/public
<Directory "/opt/lamp/apache2/myproject/public">
AllowOverride All
Require all granted
</Directory>
Apache を再起動します。
.htaccess の追加
最後の手段は、プロジェクトルートに **.htaccess** を追加することです。
プロジェクトフォルダをドキュメントルートに配置することはお勧めしません。ただし、共有サーバー上など、他に選択肢がない場合は、これを使用できます。
**htdocs** が Apache のドキュメントルートである場合、プロジェクトフォルダを以下のように配置し、**.htaccess** ファイルを作成します。
└── htdocs/
└── myproject/ (project folder)
├── .htaccess
└── public/
そして、**.htaccess** を以下のように編集します。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
<FilesMatch "^\.">
Require all denied
Satisfy All
</FilesMatch>
index.php の削除
CodeIgniter の URL を参照してください。
環境の設定
複数環境の取り扱い を参照してください。
nginx を使用したホスティング
nginx は、Web ホスティングで 2 番目に広く使用されている HTTP サーバーです。ここでは、Ubuntu Server で PHP 8.1 FPM (Unix ソケット) を使用した設定例を示します。
default.conf
この設定では、URL に「index.php」を含めずに、 「.php」で終わる URL に対しては CodeIgniter の「404 - File Not Found」を使用することが可能になります。
server {
listen 80;
listen [::]:80;
server_name example.com;
root /var/www/example.com/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm:
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
# With php-cgi:
# fastcgi_pass 127.0.0.1:9000;
}
error_page 404 /index.php;
# deny access to hidden files such as .htaccess
location ~ /\. {
deny all;
}
}
環境の設定
複数環境の取り扱い を参照してください。
アプリのブートストラップ
アプリケーション全体を実行せずにフレームワークを読み込みたい場合があります。これは、プロジェクトのユニットテストに特に役立ちますが、サードパーティツールを使用してコードを分析および変更する場合にも役立ちます。フレームワークには、このシナリオ専用のブートストラップスクリプト system/Test/bootstrap.php が付属しています。
プロジェクトへのパスのほとんどは、ブートストラッププロセス中に定義されます。定義済みの定数を使用してこれらをオーバーライドできますが、デフォルトを使用する場合は、パスがインストール方法の予期されるディレクトリ構造と一致していることを確認してください。