使用 .env 文件来存储环境变量是提升项目配置安全性和可移植性的常见做法。为了使用 .env 文件,你需要安装一个名为 vlucas/phpdotenv 的包来解析 .env 文件中的配置。以下是如何在现有的 PHP 项目中集成 .env 文件并改造上述代码的步骤。

步骤 1: 安装 PHP Dotenv

首先,使用 Composer 安装 vlucas/phpdotenv 包:

composer require vlucas/phpdotenv
  • 1.
步骤 2: 创建 .env 文件

在项目的根目录下创建一个名为 .env 的文件,并在其中存储你的数据库凭据:

DB_HOST=localhost
DB_NAME=your_dbname
DB_USER=your_username
DB_PASS=your_password
  • 1.
  • 2.
  • 3.
  • 4.
步骤 3: 修改 PHP 代码以使用 .env 文件

接下来,更新你的 PHP 脚本来加载 .env 文件并使用其中的配置信息。

使用 MySQLi 示例:
<?php
require 'vendor/autoload.php'; // 加载 Composer 自动加载文件
use Dotenv\Dotenv;

// 加载 .env 文件
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();

// 获取环境变量
$dbHost = $_ENV['DB_HOST'];
$dbName = $_ENV['DB_NAME'];
$dbUser = $_ENV['DB_USER'];
$dbPass = $_ENV['DB_PASS'];

// 使用配置信息建立连接
$conn = new mysqli($dbHost, $dbUser, $dbPass, $dbName);

if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 进行数据库操作...

// 记得关闭连接
$conn->close();
?>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
使用 PDO 示例:
<?php
require 'vendor/autoload.php'; // 加载 Composer 自动加载文件
use Dotenv\Dotenv;

// 加载 .env 文件
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();

// 获取环境变量
$dbHost = $_ENV['DB_HOST'];
$dbName = $_ENV['DB_NAME'];
$dbUser = $_ENV['DB_USER'];
$dbPass = $_ENV['DB_PASS'];

try {
    $pdo = new PDO("mysql:host={$dbHost};dbname={$dbName}", $dbUser, $dbPass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 进行数据库操作...

} catch(PDOException $e) {
    echo "数据库连接失败: " . $e->getMessage();
}
?>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
注意事项:
  • 安全性:虽然 .env 文件不在版本控制中,但应确保它不在 Web 服务器的可公开访问目录下,以防意外泄露。
  • 环境隔离:在不同的环境中(如开发、测试、生产),应有不同的 .env 文件,以适应不同的配置需求。
  • Composer 自动加载:确保在使用 Dotenv 类之前已经包含了 Composer 的自动加载文件。