“小程序后端用 PHP 还是 Node?””我写了个 PHP 接口,小程序里一直请求失败怎么办?””接口本地能访问,一上服务器就返回空,咋回事?”——搭后端是小程序开发里最容易劝退新手的一环。有个做本地生活小程序的开发者,前端写得挺溜,后端用 PHP 随手写了个接口,本地 Postman 测得好好的,结果小程序里死活调不通,折腾两天发现是服务器没开 HTTPS、域名也没进微信白名单。他不是个例——前后端打通的坑,八成不在代码逻辑,而在环境、协议、配置这三道关卡。下面按”能跑通”的顺序讲。
一、为什么很多小程序后端选 PHP
- 服务器成本低:PHP+MySQL 在宝塔/1Panel 一键装,2 核机器就能扛日常量;
- 生态成熟:ThinkPHP、Laravel 等框架资料多,招人改都容易;
- 和源码站主流交付一致:市面上多数成品小程序源码后端就是 PHP,买来直接部署最省事。
如果你买的是现成源码(后端已是 PHP),那根本不用”从零写”,照第 30 篇部署即可;本文是给你”想自己写接口”或”要改后端逻辑”时打底。
二、第 1 步:服务器与运行环境
- 系统推荐 CentOS 7+/Ubuntu 20.04+,装宝塔或 1Panel;
- 装 Nginx + PHP 7.4(兼容性好)+ MySQL 5.7;
- 建站点,绑定已备案域名,申请免费 SSL 证书并强制 HTTPS。
记住一条铁律:小程序所有请求必须 HTTPS,HTTP 一律被微信拦截。没证书前别浪费时间联调。
三、第 2 步:写一个最小可跑通接口
新建 api/test.php:
<?php
header('Content-Type: application/json;charset=utf-8');
// 允许小程序跨域(开发期)
header('Access-Control-Allow-Origin: *');
$res = ['code' => 0, 'msg' => 'ok', 'data' => ['time' => date('Y-m-d H:i:s')]];
echo json_encode($res, JSON_UNESCAPED_UNICODE);
浏览器直接访问 https://你的域名/api/test.php,能看到 JSON 就说明后端活了。注意 UTF-8 和 JSON_UNESCAPED_UNICODE,否则中文变 u 乱码。
四、第 3 步:连数据库,返回真实数据
<?php
header('Content-Type: application/json;charset=utf-8');
$pdo = new PDO('mysql:host=localhost;dbname=shop;charset=utf8', 'user', 'pass');
$stmt = $pdo->query('SELECT id,name,price FROM goods LIMIT 10');
echo json_encode(['code'=>0,'data'=>$stmt->fetchAll(PDO::FETCH_ASSOC)], JSON_UNESCAPED_UNICODE);
这一步卡住,多半是数据库账号权限、SQL 模式或字符集问题。连不上先 try/catch 把错误打出来,别盲改。
五、第 4 步:微信域名白名单(关键)
进微信公众平台→开发设置→服务器域名,把你的后端 HTTPS 域名填进 request 合法域名。没填,小程序端 wx.request 会被直接拦掉,表现就是”请求失败”。改完保存,等几分钟生效再测。
六、第 5 步:前端调通 + 参数接收
小程序端:
wx.request({
url: 'https://你的域名/api/test.php',
method: 'GET',
success(res) { console.log(res.data) }
})
后端收 POST 参数用 file_get_contents('php://input') 解析 JSON,或 $_POST(表单形式)。前后端约定好”参数格式 + 返回结构”,联调就顺了。
七、常见”请求失败 / 返回空”排查表
| 现象 | 原因 | 处理 |
|---|---|---|
| 请求失败(onFail) | 域名未加白名单 / 非 HTTPS | 第 5 步补全,改 HTTPS |
| 返回 200 但 data 为空 | 后端报错被吞 / 跨域 | 开错误显示,查日志 |
| 中文变 u 乱码 | 没加 UNESCAPED_UNICODE | 改 json_encode 参数 |
| 本地能访问服务器不能 | 防火墙/端口/SSL | 放通 443,确认证书 |
| POST 收不到参数 | 格式不对 | 用 php://input 取 JSON |
八、后端搭建 5 项自查
- [ ] PHP/MySQL 版本与代码要求匹配
- [ ] 站点已强制 HTTPS、证书有效
- [ ] 接口浏览器直访能返回 JSON
- [ ] 微信后台 request 域名已填
- [ ] 错误日志已开,便于定位
九、受益人视角
后端搭好,受益的不是写代码的你一个人,而是前端同事不用再背”接口又挂了”的锅、测试同学能跑通完整流程、最终顾客点一下就有数据返回。一套稳的后端,是整条交付链里最沉默也最关键的那个齿轮——它不显眼,但缺了全链路停摆。
十、消费借口:自己写接口不是”折腾”,是”把命脉握手里”
有人犹豫:”买现成源码不就行了,为啥要学搭后端?”身份一换就清楚:你若是站长,懂一点后端,供应方不敢拿加密包糊弄你,出问题你能自己看日志定位,不用每次都求人;你若是开发者,这套能力直接变成接单溢价。你投入的不是”瞎折腾的时间”,是”不被绑死、能自救”的主动权。
📦 卓创源码网:小程序后端 PHP 源码开源未加密、带接口文档,方便你自己搭、自己改。浏览对应栏目:{{下载页链接}} 🔗 后端部署详细步骤看:{{部署教程链接}}















请登录后查看评论内容