微信开发者工具不支持直接运行php,需通过wx.request对接本地或远程php接口实现联调;常见404因php服务未启动、url配置错误或跨域未处理,正确做法是用php -s启动服务并设置响应头与数据解析逻辑。
微信开发者工具本身不支持直接“转”PHP文件——它只是前端调试环境,PHP是后端语言,运行在服务器上。所谓“转”,其实是把小程序里写的 wx.request 请求,对接到你本地或远程的 PHP 接口上,完成前后端联调。
为什么 wx.request 总是 404 或 fail?
这是联调初期最常见现象,根本原因不是代码写错,而是请求没发到真正的 PHP 文件上:
- 误把
localhost:8080/api.php当成可用地址——微信开发者工具默认禁止访问http非本地域名(localhost被允许,但需确认 PHP 服务确实在跑) - PHP 文件放在微信项目目录里(如
miniprogram/api.php),但微信工具不会执行 PHP,只当静态文件返回源码或 404 - 没开 PHP 服务,或 Apache/Nginx 没监听 80/443,或端口被占用(比如
php -S localhost:8000启动后,小程序却仍请求:80) - 微信开发者工具开启了「不校验合法域名」,但 PHP 接口响应头缺
Access-Control-Allow-Origin: *,导致浏览器层拦截(真机调试时此限制更严)
怎么让小程序正确调用你的 PHP 接口?
核心就一条:确保 wx.request 的 url 指向一个真实可访问、能执行 PHP 的 HTTP 地址。
- 本地开发推荐用内置 PHP Server:
php -S localhost:8000 router.php(router.php简单转发路由,避免 404) - 接口 URL 写成
http://localhost:8000/user/login.php,并在微信开发者工具「详情 → 本地设置」勾选「不校验合法域名」 - PHP 文件里必须输出 JSON,且带正确 header:
header('Content-Type: application/json; charset=utf-8'); - 如果用 XAMPP/MAMP,确认 Apache 已启动,并把 PHP 文件放
htdocs/下,URL 改为http://localhost/user/login.php
PHP 接收小程序数据要注意什么?
wx.request 默认发送的是 JSON,但 PHP $_POST 拿不到——因为小程序没设 content-type: application/x-www-form-urlencoded,而是 raw body。