ThinkPHP 7.2 必须使用 PHP ≥7.2.5(如7.2.33),宝塔默认PHP 7.2版本过低会导致null合并操作符报错;需升级PHP、启用fileinfo/opcache、网站运行目录设为/public、伪静态选thinkphp,并确保数据库名/用户名不含点号。

ThinkPHP 7.2 环境必须用 PHP 7.2+,但别直接装宝塔默认的 PHP 7.2
宝塔软件商店里标“PHP 7.2”的扩展包实际是 php72(即 PHP 7.2.x),但 ThinkPHP 7.2 官方要求最低为 PHP 7.2.5,而宝塔默认安装的 php72 版本常为 7.2.0 或 7.2.1——启动时会报 ParseError: syntax error, unexpected '?',这是因 null 合并操作符 ?? 在早期 7.2 版本中未完全支持。
解决办法是:在宝塔「软件商店」→ 找到 PHP 7.2 → 点击「设置」→「安装扩展」里务必勾选 fileinfo 和 opcache(非可选,TP7.2 路由和模板编译强依赖);然后返回「已安装」列表,点击 PHP 7.2 右侧的「版本管理」→ 升级到 7.2.33 或更高(宝塔 9.2+ 已提供该版本)。升级后执行 php -v 确认输出含 7.2.33 或类似。
站点根目录必须设为 /public,且伪静态不能选错
ThinkPHP 7.2 默认采用 public 入口模式,所有 Web 请求必须指向 public/ 目录,否则 index.php 无法加载框架、.env 不生效、路由 404。
操作路径:宝塔「网站」→ 找到你的站点 →「设置」→「网站目录」→「运行目录」下拉选择 /public(不是 /,也不是 /public/ 带尾斜杠);接着切换到「伪静态」选项卡 → 从下拉菜单中选择 thinkphp(不是 laravel 或 none);保存后务必点击「重载配置」。
立即学习“PHP免费学习笔记(深入)”;
常见错误现象:
– 访问域名显示空白页,但 curl -I http://yourdomain.com 返回 200 OK;
– 后台登录页能打开,但提交表单后跳转 /admin/login 报 404;
– public/.htaccess 被上传但 Nginx 忽略——因为宝塔用的是 Nginx,.htaccess 完全无效,只认「伪静态」规则。
SSL 绑定前先确认域名已解析、443 端口已放行
很多用户卡在「申请成功但 HTTPS 打不开」,根本原因不是证书问题,而是网络层阻断。Let’s Encrypt 验证阶段只走 HTTP(80 端口),但浏览器访问必须走 HTTPS(443 端口)——这两个端口都要通。
检查清单:
– 在服务器终端执行 sudo ss -tlnp | grep ':80\|:443',确认 Nginx 正在监听两个端口;
– 登录云厂商控制台(如阿里云/腾讯云),检查安全组是否同时放行了 80/TCP 和 443/TCP;
– 域名 DNS 解析必须已生效(dig yourdomain.com +short 应返回服务器 IP);
– 宝塔「网站」→ 站点设置 → 「SSL」→ 选「Let's Encrypt」→ 勾选「强制HTTPS」→ 保存。
注意:强制HTTPS 开启后,Nginx 会自动插入 301 跳转规则,无需手动写重定向。但如果之前有自定义 Nginx 配置(比如改过 root 或加了 location 块),可能覆盖宝塔生成的跳转逻辑,导致 HTTPS 访问时 502 或空白——此时应删掉自定义配置,用宝塔原生方式管理。
数据库名和用户名不能含点号,否则安装页卡在「下一步」
ThinkPHP 安装向导在提交数据库配置时,会校验 DB_NAME 和 DB_USER 是否符合 MySQL 标识符规范。宝塔建库时允许输入 myapp.v1 这类带点的名称,但 TP7.2 的 PDO 连接层会把它当库名+表名解析,最终抛出 SQLSTATE[HY000] [1049] Unknown database 'myapp'(只取了点号前部分)。
正确做法:
– 在宝塔「数据库」页面新建库时,库名填 myapp_v1(用下划线)或 myappv1(纯字母数字);
– 用户名同理,避免 admin.test,改用 admin_test;
– 密码建议含大小写字母+数字,不含特殊字符(如 @、$、/),否则 URL 编码易出错;
– 提交安装表单前,在服务器上先用 mysql -u用户名 -p -h127.0.0.1 数据库名 手动连一次,确认能进。
这一步最容易被忽略——界面没报错,只是「下一步」按钮一直转圈,日志里也看不到明显异常,实际是 PDO 连接超时静默失败。



















