您的当前位置:首页>全部文章>文章详情

【Webman+MySQL答题系统二】环境搭建与项目初始化

果子发表于:2026-10-05 20:55:42浏览:1次TAG: #PHP #MySql #答题系统

本篇目标

新建 quiz_system 项目,装好 webman/database,接上 MySQL,跑通第一条接口,为后面八篇准备好骨架。

第二篇封面

一、环境要求

  • PHP >= 7.4(建议 8.0+),需启用 pdo_mysql、mbstring;
  • Composer 2.x;
  • MySQL 5.7+(options 字段用了 JSON 类型,5.7 起支持);
  • Linux 下多进程需要 pcntl/posix 扩展;Windows 开发期可用 windows.php 单进程跑。
php -v
composer -V
mysql --version

二、创建项目

composer create-project workerman/webman quiz_system
cd quiz_system
composer require webman/database

项目骨架各目录的职责:

路径职责
app/controller控制器,业务入口
app/modelORM 模型
app/middleware中间件(第九篇鉴权用)
config/route.php路由注册
config/database.php数据库连接配置
database/init.sql建表脚本(第三篇添加)

三、建库

CREATE DATABASE quiz_system DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;

四、配置数据库

编辑 config/database.php,database 换成 quiz_system:

<?php
return [
    'default' => 'mysql',
    'connections' => [
        'mysql' => [
            'driver'      => 'mysql',
            'host'        => '127.0.0.1',
            'port'        => '3306',
            'database'    => 'quiz_system',
            'username'    => 'root',
            'password'    => env('DB_PASSWORD', ''),
            'charset'     => 'utf8mb4',
            'collation'   => 'utf8mb4_general_ci',
            'prefix'      => '',
            'timezone'    => '+08:00',
        ],
    ],
];

密码放根目录 .env(DB_PASSWORD=xxx),不进代码库。

五、统一返回结构

把上一个系列用过的 helper 放进 app/functions.php,全项目复用:

function success($data = [], string $msg = 'ok')
{
    return json(['code' => 0, 'msg' => $msg, 'data' => $data]);
}

function error(string $msg = 'fail', int $code = 1)
{
    return json(['code' => $code, 'msg' => $msg]);
}

六、跑通第一条接口

app/controller/PingController.php:

<?php
namespace app\controller;

use support\Request;

class PingController
{
    public function index(Request $request)
    {
        return success(['time' => date('Y-m-d H:i:s'), 'ip' => $request->remoteIp()]);
    }
}

config/route.php 注册:

use support\Router;
use app\controller\PingController;

Route::get('/api/ping', [PingController::class, 'index']);

启动后验证:

curl http://127.0.0.1:8787/api/ping
// {"code":0,"msg":"ok","data":{"time":"...","ip":"127.0.0.1"}}

七、启动方式与常驻内存提醒

  • Linux:调试用 php start.php start,生产用 php start.php start -d 守护模式;
  • Windows 开发:直接 php windows.php;
  • 改完代码必须重启进程,Webman 常驻内存不会自动加载新代码——这是传统 PHP-FPM 迁移过来最容易踩的坑。

整个初始化流程如下:

项目初始化流程图

小结

骨架已就绪:项目、数据库连接、统一返回、第一条接口。下一篇把六张表的建表 SQL 全部落地。