thinkphp在windows部署成功的关键是:public目录必须设为web根目录、php版本需匹配框架要求(如tp5.0.x用php7.2–7.4,tp6.0.x用php7.4或8.0)、伪静态规则必须生效,三者缺一不可,否则导致404或白屏。

ThinkPHP 在 Windows 上部署不难,但成败关键在 public 目录是否被正确设为 Web 根目录、PHP 版本是否匹配框架要求、以及伪静态规则有没有生效——三者缺一不可,错一个就 404 或白屏。
确认 PHP 版本和 ThinkPHP 版本是否兼容
不同 ThinkPHP 版本对 PHP 有硬性要求,强行混搭会直接报错(比如 Parse error: syntax error 或启动时提示 class not found):
- ThinkPHP 5.0.x 要求
PHP >= 5.4.0,但实际建议用PHP 7.2–7.4(NTS 版),避免 8.0+ 的废弃函数报错 - ThinkPHP 6.0.x 要求
PHP >= 7.1.0,推荐PHP 7.4 或 8.0(注意:TP6.0.6 不完全兼容 PHP 8.1+ 的严格类型推导) - 用
php -v和php --ini确认当前 CLI 使用的 PHP 版本和配置文件路径,别被集成环境里多个 PHP 版本搞混
Web 服务器必须指向 public 目录,不是项目根目录
这是最常踩的坑:把整个 ThinkPHP 项目(含 app、config、vendor)直接丢进 htdocs 或 www,结果敏感配置文件(如 .env)被直接暴露,或路由全失效。
- XAMPP/WampServer:把项目复制到
D:\xampp\htdocs\myapp后,浏览器必须访问http://localhost/myapp/public/,不能访问/myapp/ - IIS/Nginx:网站「物理路径」必须设置为
C:\inetpub\wwwroot\myapp\public,而不是...\myapp - Apache 用户若想省掉
/public/,需改httpd.conf或使用.htaccess重写,但 Windows 下 Apache + mod_rewrite 支持不稳定,不建议折腾
Nginx/IIS 必须配好伪静态,否则除首页外全 404
ThinkPHP 6 默认用 PATHINFO 模式(如 /index.php/user/login),但 Windows 下 Nginx 或 IIS 不开重写规则,/user/login 这种地址根本找不到文件。
立即学习“PHP免费学习笔记(深入)”;
- Nginx 配置中
location /块内必须加这段(注意路径要和你的root一致):if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; } - IIS 需安装
URL Rewrite模块,然后在站点根目录放web.config,内容包含匹配^(.*)$并重写到index.php?s={R:1}的规则 - 如果用的是 ThinkPHP 自带的
public/index.php入口,别动它;改public/.htaccess对 Windows 无效,那是 Apache 用的
真正卡住人的往往不是“怎么装”,而是“为什么明明文件都在却打不开”。多看一眼 phpinfo() 输出里的 Loaded Configuration File,再检查一遍 Web 根目录是不是落到了 public 里面——这两个动作花 30 秒,能省下两小时瞎调。











