给一套 ThinkPHP 8 写的 CRM 做 phpStudy 部署,源码地址 https://gitee.com/ymwl2/fhxcrm,直接下的 master.zip。

把过程和踩的坑记一下,后面复装能直接抄。
动手之前,先交代一句这套系统是干嘛的,免得装完发现不是自己要的。符号象 CRM 是面向销售团队的客户关系管理系统,后台 Layui,移动端 uni-app(H5/小程序/App 一套代码)。客户、线索、商机、合同、回款这条销售主链路是通的,外带公海池、跟进记录、审批流程、业绩看板。
它最拿得出手的是两点:
- 自定义字段:不用改代码,后台配一下就能给客户加行业专属字段,制造、贸易、服务、教育都能往里套,省得每换一个行业单独开发一套。
- 权限分级:RBAC 权限节点 + 角色组 + 数据范围(我的/下属/全部)三级管控,谁能看什么数据、谁只能看自己的,管得清楚。
另外还支持插件扩展、SMTP 邮件、电话助手这些。拿来给销售团队内部用,或者当二次开发模板练手都行。
介绍完它能干嘛,下面进入正题,从环境开始。
环境要求
| 项 | 要求 |
|---|---|
| PHP | 8.0 及以上,我用 8.2 |
| MySQL | 5.7 / 8.0,要 utf8mb4 |
| 扩展 | fileinfo、gd、curl、mbstring、pdo_mysql、openssl、zip |
三个要点先记下来:
- 入口要绑
public。这套是 ThinkPHP 多应用,admin.php、api.php、install.php都在public/下面。站点根目录设成源码根目录也能跑,但源码直接暴露在 Web 下,作者文档也让绑 public。 - 源码不带
vendor。框架本体靠 Composer 装,压缩包里没有,必须先 composer install,否则进去就报错。 - 扩展由安装向导检测,缺一个都走不到下一步。phpStudy 装完 PHP 8.2 不会自动配扩展,得自己建个 php.ini 补上(见下一节)。
装 phpStudy
phpStudy(小皮面板),Apache/Nginx、PHP、MySQL 都打包好了。
- 官网下 Windows 安装包,默认装,下载地址https://public.xp.cn/upgrades/phpStudy_64.zip。
- 软件管理里装三样:Web 服务器(Apache 或 Nginx 二选一,图省事选 Apache)、PHP 8.2、MySQL 5.7 或 8.0。
- 回首页把 Web 服务器和 MySQL 启动起来。
装完 PHP 8.2 有个坑,扩展不会自动配好,得自己建 php.ini。到 PHP 目录(比如 D:\phpstudy_pro\Extensions\php\php8.2.9nts\)新建 php.ini,写:
ini
extension_dir="D:\phpstudy_pro\Extensions\php\php8.2.9nts\ext"
extension=curl
extension=fileinfo
extension=mbstring
extension=openssl
extension=pdo_mysql
extension=zip
extension=gd
extension_dir 换成你自己的实际路径。存下来重启 Web 服务,命令行 php -m 能列出这些扩展就对。
root 密码默认是 root,线上使用建议创建独立的数据库账号密码。
解压源码 + 建站
先解压 master.zip 到一个不带中文、不带空格的目录,比如 D:\www\fhxcrm。放桌面或有中文路径,后面会报些莫名其妙的错。
然后 phpStudy 建站:
- 「网站」→「创建网站」。
- 域名填
127.0.0.1(本机调试);根目录选到D:\www\fhxcrm\public,注意是 public 不是源码根目录;PHP 版本选 8.2。 - 保存,确认站点是启动状态。
根目录选成 public,图片上传和目录安全才正常。绑源码根目录短时间能用,安全性差。
装 Composer
源码没 vendor,得先有 Composer。phpStudy 自带具体进入软件管理切换到composer项,直接选择composer2.5.8版本安装

-
在 phpStudy 里选中刚建的那个网站,点「管理」,打开「composer」菜单(这个菜单要站点建好了才有)。
-
弹窗里两个版本都要手动选:composer 选
2.5.8,PHP 选php8.2.9nts。
-
确定后弹出一个 cmd 窗口,它默认可能停在
public目录------先cd ..切回项目根目录(能看到composer.json的那一层),不然 composer install 找不到 composer.json。
装完先配国内镜像,不然 composer install 慢到爆:
bash
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
全局配置,配一次就行。
composer install
在项目根目录(D:\www\fhxcrm,能看到 composer.json 的那层)跑:
bash
composer install
装完目录里多出 vendor 文件夹就成了。报错查三样:PHP 是不是 8.0+、镜像配没配、是不是 32 位 PHP。
数据库(可以不动,向导会自动建)
账号有建库权限(root 就有),向导会 CREATE DATABASE IF NOT EXISTS 自动建库,不必先手动建。
想手动建就 phpMyAdmin 用 root 登录,新建 fhxcrm,排序规则 utf8mb4_unicode_ci,建个空库就行,表不用建。
⚠️ 风险:重新安装会清空原数据。建表 SQL 里每张表都是
DROP TABLE IF EXISTS先删再建,删了config/install.lock重装、或换库重导,之前录的客户、合同、跟进记录全没。重装前先备份数据库。
跑 install.php
浏览器开 http://127.0.0.1/install.php实际就是创建的网站域名,三步:
第一步 环境检测:自动查 PHP 版本、扩展、上传大小、目录权限,全绿走下一步;有红的按前面补开扩展再点「重新检测」。
第二步 填信息:
数据库:
- 服务器
127.0.0.1 - 端口
3306 - 用户名
root - 密码:上面设的
- 库名:
fhxcrm(有权限自动建) - 表前缀
ymwl_(默认) - 编码
utf8mb4
填完账号密码失焦会自动测试连接,连不上立刻能看出来。
管理员:账号默认 admin,密码 6~32 位,邮箱必填。
第三步 完成 :导表、写 config/database.php、生成 config/install.lock,并把密钥 APP_KEY/COOKIE_CRYPT_KEY 写进根目录 .env。
登录和收尾
后台 http://127.0.0.1/admin.php,用刚设的账号登录。

登录后看到上面这个界面就表述安装成功了
装完三件事:
- 删
app/install/和install.php(根目录和 public 下都有),防止被重装。 public/admin.php改名,比如mycrm2026.php,后台入口别用默认名。- 备份
config/database.php。
改完页面异常就清缓存:后台右上角,或命令行 php think clear。
定时任务(可选)
跟进、回款、合同到期提醒靠定时访问这个地址触发:
http://127.0.0.1/index.php/cron/index?token=xxx
token 在 config/app.php 的 cron_token,默认 your_cron_token_here_2026,上线前改掉。别去改 Cron.php,它是读配置的,改了没用。
phpStudy 面板里没有计划任务,Windows 用任务计划程序:
Win+R输taskschd.msc回车;- 创建基本任务,名称随意;
- 触发器每天、重复间隔 1 小时;
- 操作选启动程序,程序
curl.exe(Win10 1803 之后自带),参数填那串地址。
懒得配本机就交给在线 cron(cron-job.org)。
踩坑记录
- install.php 第一步有扩展红 /
php -m看不到扩展 :多半是 php.ini 没建对,或extension_dir路径写错。按上节把 php.ini 内容补全(重点 fileinfo、gd),存下重启 Web 服务,回检测页「重新检测」。 - 上传附件失败 / 验证码不显示:fileinfo、gd 没写进 php.ini,同上补上。
- composer 菜单弹的 cmd 停在 public 目录 :先
cd ..回项目根目录再 composer install。 - composer install 卡住或报错:三查------镜像、PHP 版本、路径中文。
- install.php 提示已安装 :
config/install.lock存在,删了再访问(会清配置,先备份)。 - 填库提示「配置的数据库存在数据」:库不是空的,换空库或清空(清空会丢数据,先备份)。
- 后台样式错乱:删 runtime 目录或后台清缓存。
这套流程走下来基本就明白了:gitee 上类似的 PHP 源码项目,部署都是同一个套路------phpstudy 配环境、composer 装依赖、绑 public、跑 install 向导。会了这一套,其他 ThinkPHP 或常规 PHP 项目也能照这个思路装。