envファイルはLinux等の環境用なのでそれ以外の環境(Windows)では自動で読み込まれない。
vlucas / phpdotenv を使用して読み込み可能にする。
【環境(インストール、設定済みであることが前提)】
・Windows10 Pro 64bit
・IIS 10
・PHP 7.4.5
・Comporser 2.0.8
・CodeIgniter4
■手順
(1) CodeIgniterのROOTフォルダで次のコマンドを実行し、vlucas / phpdotenv をインストールする。(詳細はこちら)
composer require vlucas/phpdotenv
(2) \app\Config\Events.php ファイルの最後に以下のコードを追記する。
use Dotenv;
Events::on('pre_system',
function() {
try {
$dotenv = Dotenv\Dotenv::createImmutable(ROOTPATH, 'env');
$dotenv->load();
} catch (Exception $e) {
// エラー発生時はenvを読み込まない
}
function env($variable, $default = null) {
$value = getenv($variable);
return ($value) ? $value : $default;
}
});
(3) envファイルのDBなど各箇所を書き換え。
envファイル SQLite3の使用例(抜粋)
filepath = 'X:\WEB_ROOT\mycodeIgniter4'
database.default.hostname =
database.default.database = "${filepath}\\writable\\sqlite3\\test.db"
database.default.username =
database.default.password =
database.default.DBDriver = SQLite3
database.tests.hostname =
database.tests.database = "${filepath}\\writable\\sqlite3\\test.db"
database.tests.username =
database.tests.password =
database.tests.DBDriver = SQLite3
以上でIIS上でenvファイルが使えます。
参考サイト
【メモ】レンタルサーバ用 (ファイル名は'.env'にする。Events.phpの書き換えは不要。)
filepath = '/home/myname/www/mydir/mycodeIgniter4'
database.default.hostname =
database.default.database = '${filepath}/writable/sqlite3/test.db'
database.default.username =
database.default.password =
database.default.DBDriver = SQLite3
database.tests.hostname =
database.tests.database = '${filepath}/writable/sqlite3/test.db'
database.tests.username =
database.tests.password =
database.tests.DBDriver = SQLite3
タグ:PHP CodeIgniter4