
文章分类:新闻资讯 发布时间:2026-10-05 原文作者:小程序开发 阅读( )

打开微信,点开任何一个带搜索框的小程序,你大概不会去想它背后跑着什么代码。但你如果自己试着搭一个,就会发现一个尴尬的事实:网上十篇教程有八篇是Node.js的,剩下两篇是Java的。PHP呢?好像被遗忘在了某个角落。但恰恰是PHP,可能是小团队、个人开发者最友好的后端语言——不用装数据库客户端,不用配环境变量,一个能跑PHP的虚拟主机就够了。我去年给一个本地水果店做配送小程序,后端就是PHP写的,从零到上线,前后不到两周。今天就把这条路走一遍,你会发现这事没那么玄乎。
先说清楚一个核心概念:微信小程序本身不认PHP,也不认任何后端语言。它只认HTTPS接口返回的JSON数据。所以PHP要做的事,就是提供这些接口。比如用户点了个“加入购物车”按钮,小程序那边发一个POST请求到你服务器的某个URL,PHP接收参数、查数据库、算价格,吐出一段JSON,小程序拿到JSON再渲染页面。整个过程里,PHP就是个中间人,负责干活和传话。
那第一步,你得有个能跑PHP的环境。别一上来就想着买服务器、装LNMP,那太折腾了。用宝塔面板,五分钟就能把一个空服务器变成能跑PHP的环境。选PHP 7.4以上版本,因为微信小程序要用的AES解密、HMAC签名这些函数,老版本PHP支持得不好。装好之后,在宝塔里新建一个站点,绑定你的域名,开启SSL证书——这一步必须做,微信小程序强制要求所有请求走HTTPS,没证书的域名直接报错。
域名准备好之后,去微信公众平台注册一个小程序账号。这里有个坑:个人主体的小程序没法开通微信支付,但可以正常调用登录、获取用户信息这些接口。如果你是给公司做的,记得用企业主体注册。注册完之后,在“开发管理”页面拿到你的AppID和AppSecret,这两个东西就是小程序的身份证,后面对接登录要用。把它俩存到PHP的配置文件里,别写进代码里到处传。
现在开始写第一段PHP代码。新建一个文件叫login.php,功能是处理小程序发来的登录请求。小程序端调用wx.login()会拿到一个code,这个code有效期五分钟,你用PHP拿这个code去微信服务器换openid和session_key。代码大概长这样:接收code,拼一个URL,用file_get_contents发请求,解析返回的JSON,拿到openid就存进数据库,同时生成一个自定义的token返回给小程序。这个token就是以后小程序每次请求的通行证,存在小程序端的storage里。
写完登录,接下来是最常用的一个功能:获取用户手机号。注意,这个接口从2023年开始调整了,现在必须用getPhoneNumber按钮触发,用户主动点击才能拿到。PHP这边要做的事是:接收小程序传来的code,调用微信的接口换取手机号加密数据,然后用session_key做AES解密。解密那段代码网上有现成的,但要注意PHP的openssl扩展必须开启。我踩过的坑是:宝塔默认PHP没开openssl,害我多花了一晚上排查。
接口写好了,怎么测试?别急着真机联调,先在浏览器里模拟。用Postman往你的接口地址发一个带参数的请求,看返回的JSON对不对。没问题之后再打开微信开发者工具,把request合法域名填上你服务器的域名,然后跑一下看报错。这里最常见的报错是“url not in domain list”,八成是域名没配置对,或者证书没装好。记住,微信开发者工具里可以勾选“不校验合法域名”来临时调试,但真机预览时必须关掉。
联调通过之后,就该处理并发和性能了。PHP写小程序后端,最头疼的是数据库连接。每次请求都重新连一次MySQL,并发一高就崩。解决办法是开持久连接,或者用轻量级的SQLite。如果你做的是小工具类小程序,用户量不大,SQLite反而更省事——不用装MySQL,不用调优,一个文件搞定。但如果你做的是电商类、有订单和库存的,还是老老实实用MySQL,加个Redis做缓存。
说点PHP被喷得最多的安全性。小程序接口最怕的是别人抓包伪造请求。你能做的至少有三件事:第一,所有接口都要校验token,token失效就返回401;第二,关键操作要验签,比如下单、退款,用HMAC-SHA256签名,防止数据被篡改;第三,对输入做过滤,PHP的filter_var函数就够用,别嫌麻烦。我见过太多人把用户提交的金额直接拿去用,结果被改成一毛钱下单。
回头看整个流程,从零到一其实就四步:装环境、配域名、写接口、调联调。PHP没有Node那么潮,但胜在稳、文档多、踩坑的人少。你随便搜一个PHP报错,答案比搜一个Go报错多十倍。而且PHP的部署成本低,一台最便宜的云服务器就能跑起来。微信小程序这东西,后端真的不需要多炫技,能稳定扛住请求、数据不出错,就够了。
写这篇文章的时候,我那个水果店客户已经跑了一整个夏天,高峰期一天几百单,PHP后端没崩过一次。所以别被“PHP已死”的论调吓住,工具合不合适,看的是场景。小程序后端这活儿,PHP能干,而且干得不错。你如果正打算动手,别犹豫,直接开干。遇到报错就去查,查不到就断点打日志,总能把问题揪出来。从零到一,无非就是迈出第一步,然后走完剩下的九十九步。