PHP 项目初始化脚本干些啥

wen PHP项目 6

本文目录导读:

PHP 项目初始化脚本干些啥

  1. 环境检查与配置
  2. 目录结构创建
  3. 配置文件生成
  4. 依赖管理
  5. 环境变量配置
  6. 数据库初始化
  7. 基础数据填充
  8. 文件权限设置
  9. 生成应用密钥
  10. 自动加载器优化
  11. 测试环境准备
  12. 安全初始化
  13. 预处理与检查
  14. 日志和缓存清理
  15. 版本控制初始化
  16. 任务调度和队列队列
  17. 实际案例:Laravel 初始化脚本
  18. 最佳实践

我来详细解释 PHP 项目初始化脚本通常包含的内容,以及它们的作用:

环境检查与配置

// 检查 PHP 版本
if (version_compare(PHP_VERSION, '7.4.0', '<')) {
    die('需要 PHP 7.4 或更高版本');
}
// 检查必要的扩展
$requiredExtensions = ['pdo', 'mbstring', 'curl', 'json'];
foreach ($requiredExtensions as $ext) {
    if (!extension_loaded($ext)) {
        die("缺少扩展: {$ext}");
    }
}

目录结构创建

# 创建标准目录结构
mkdir -p {app,config,public,storage,resources,routes}
mkdir -p app/{Controllers,Middleware,Models,Services}
mkdir -p storage/{cache,logs,uploads}

配置文件生成

// 生成 .env 文件
$envContent = "
APP_NAME=MyApp
APP_ENV=development
APP_DEBUG=true
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=root
DB_PASSWORD=
";
file_put_contents('.env', $envContent);
// 生成 config 文件
$config = [
    'database' => [...],
    'mail' => [...],
    'cache' => [...]
];

依赖管理

# 生成 composer.json
composer init
# 安装依赖
composer install --no-interaction --prefer-dist
# 或指定版本
composer require laravel/framework:^9.0

环境变量配置

// 加载 .env 文件
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
// 生成 APP_KEY
if (!file_exists('.env')) {
    $key = bin2hex(random_bytes(32));
    // 写入 .env
}

数据库初始化

-- 创建数据库
CREATE DATABASE IF NOT EXISTS myapp
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 运行迁移
php artisan migrate --force

基础数据填充

// 创建默认管理员
$admin = [
    'username' => 'admin',
    'password' => password_hash('admin123', PASSWORD_DEFAULT),
    'email' => 'admin@example.com'
];
// 插入种子数据
db()->table('users')->insert($admin);

文件权限设置

# 设置存储目录权限
chmod -R 775 storage bootstrap/cache
chmod -R 755 public
chown -R www-data:www-data storage/

生成应用密钥

// 生成唯一的应用密钥
$key = 'base64:' . base64_encode(random_bytes(32));
file_put_contents('.env', "\nAPP_KEY={$key}", FILE_APPEND);

自动加载器优化

# 优化自动加载
composer dump-autoload --optimize
# 生成类映射
composer dump-autoload --classmap-authoritative

测试环境准备

// 创建测试数据库
$testConfig = [
    'host' => 'localhost',
    'database' => 'myapp_test',
    'username' => 'root',
    'password' => ''
];
// 设置测试环境变量
putenv('APP_ENV=testing');
putenv('DB_DATABASE=myapp_test');

安全初始化

// 生成安全密钥
$securityKeys = [
    'cipher' => 'AES-256-CBC',
    'key' => bin2hex(random_bytes(32)),
    'iv' => bin2hex(random_bytes(16))
];
// 设置会话安全
ini_set('session.cookie_httponly', 1);
ini_set('session.use_strict_mode', 1);

预处理与检查

# 检查 PHP 语法
find . -name "*.php" -exec php -l {} \;
# 检查配置
php -m | grep -E "pdo|curl|json"

日志和缓存清理

# 清理缓存
php artisan cache:clear
php artisan view:clear
php artisan config:clear
# 创建日志文件
touch storage/logs/laravel.log

版本控制初始化

# 创建 .gitignore
echo "/vendor/" > .gitignore
echo "/storage/" >> .gitignore
echo ".env" >> .gitignore
git init

任务调度和队列队列

# 创建计划任务
crontab -e
# 添加行: * * * * * php /path/to/project/artisan schedule:run
# 启动队列
php artisan queue:table
php artisan migrate

实际案例:Laravel 初始化脚本

#!/bin/bash
# Laravel 项目初始化脚本
echo "🚀 开始初始化 Laravel 项目..."
# 1. 创建项目
composer create-project laravel/laravel .
echo "✅ 项目创建完成"
# 2. 配置环境
cp .env.example .env
php artisan key:generate
echo "✅ 环境配置完成"
# 3. 创建数据库用户
mysql -e "CREATE DATABASE IF NOT EXISTS ${DB_NAME}"
# 4. 安装前端依赖
npm install
npm run build
echo "✅ 前端依赖安装完成"
# 5. 运行迁移
php artisan migrate --seed
echo "✅ 数据库初始化完成"
# 6. 创建存储链接
php artisan storage:link
echo "✅ 存储链接创建完成"
echo "🎉 项目初始化完成!"

最佳实践

  1. 幂等性:脚本应该可以安全地多次运行
  2. 错误处理:包含良好的错误处理和回滚机制
  3. 日志记录:记录初始化过程中的所有操作
  4. 交互性:允许用户输入配置选项
  5. 可配置:支持通过参数或配置文件自定义

这个脚本的核心目标是简化开发环境搭建、确保一致性,并减少手动配置的错误。

抱歉,评论功能暂时关闭!