一、.env文件说明:
.env文件是环境变量,用于加载该文件中的数据到环境变量中,通常,该文件的权限为600,其他用户不可读取。只允许该服务器进程读取。
常用的.env文件目录范例:
project/
├── .env # 生产环境(不提交Git,添加到.gitignore文件)
├── .env.dev # 开发环境(团队共享)
├── .env.test # 测试环境(CI/CD使用)
└── .env.example # 示例配置(提交Git)
.env文件格式范例:
# .env 文件内容
APP_NAME="Laravel Project"
APP_ENV=production # 开发环境为local,测试环境为testing
APP_KEY=base64:abcdef123456... # 应用加密密钥
APP_DEBUG=false # 生产环境关闭调试
APP_URL=https://example.com
# 数据库配置
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=prod_db
DB_USERNAME=prod_user
DB_PASSWORD=secure_prod_pass
# 缓存/会话配置
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
# 第三方服务
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=postmaster@example.com
MAIL_PASSWORD=mailgun_key
二、安装读取.env文件的依赖:
composer require vlucas/phpdotenv
三、MVC开发中,在入口文件index.php中加载.env文件
// 入口文件 index.php
require_once __DIR__ . '/vendor/autoload.php';
// 加载.env(原生PHP)
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load(); // 加载根目录的.env文件
// 初始化MVC应用(如路由、控制器调度)
$app = new App();
$app->run();
四、封装配置
// config/Config.php(配置层)
class Config {
// 数据库配置
public static function database() {
return [
'host' => $_ENV['DB_HOST'] ?? 'localhost',
'dbname' => $_ENV['DB_DATABASE'] ?? 'mvc_app',
'username' => $_ENV['DB_USERNAME'] ?? 'root',
'password' => $_ENV['DB_PASSWORD'] ?? '',
'charset' => 'utf8mb4',
];
}
// 应用环境配置
public static function app() {
return [
'env' => $_ENV['APP_ENV'] ?? 'development',
'debug' => $_ENV['APP_DEBUG'] ?? false,
'url' => $_ENV['APP_URL'] ?? 'http://localhost',
];
}
// 第三方服务配置(如API密钥)
public static function api() {
return [
'paypal_key' => $_ENV['PAYPAL_KEY'] ?? '',
'oss_key' => $_ENV['OSS_KEY'] ?? '',
];
}
}