thinkphp生产环境部署需确保三点:入口指向public目录、请求统一由index.php调度、敏感资源禁web访问;php版本须为8.0.x或8.1.x,禁用8.3+;nginx root须设为public,伪静态用try_files,禁用fastcgi_split_path_info;runtime和uploads目录权限755并g+s,.env权限644且nginx显式deny;上线前清空runtime、关闭debug、验证php链路。

ThinkPHP 生产环境部署不是简单上传代码,核心在于三点:入口路径必须精准指向 public 目录、所有请求必须统一由 index.php 调度、敏感资源必须严格禁止 Web 访问。漏掉任一环节,轻则 404 或白屏,重则配置泄露或 502 错误。
PHP 环境必须达标
ThinkPHP 6.x/8.x 明确要求 PHP ≥ 8.0.0 且 禁用 8.3+(函数签名变更会导致路由失效、类加载异常)。安装后需确认:
- 执行
php -v和php-fpm -v,确保 CLI 与 FPM 版本一致且为 8.0.x 或 8.1.x - 启用必需扩展:
mbstring、openssl、pdo_mysql、fileinfo、redis(如用缓存) - 检查
php.ini中cgi.fix_pathinfo=0—— 不设此项,Nginx 下存在任意文件执行风险 - 运行
composer install --optimize-autoloader --no-dev安装依赖,避免 dev 包进入生产环境
Nginx 配置必须精准
root 必须指向项目 public/ 目录,且伪静态规则要兼顾路由解析与安全性:
- server 块中设置:
root /var/www/myapp/public;(绝对路径,结尾不加斜杠) - 在
location /内使用标准重写:try_files $uri $uri/ /index.php?$query_string; - 删除
fastcgi_split_path_info—— ThinkPHP 不依赖该变量,保留会干扰 PATH_INFO 解析 - PHP 处理块只需基础配置:
fastcgi_pass unix:/run/php/php8.0-fpm.sock;+fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
权限与安全必须闭环
权限错位是生产环境最常被忽略的故障源:
-
runtime/、public/uploads/目录属主设为 Web 运行用户(如www-data或nginx),权限为755;目录内文件默认644 -
runtime/目录额外添加g+s(即chmod g+s runtime),确保新生成文件继承组权限 -
.env文件权限设为644,必须位于项目根目录(非 public 下),且 Nginx 中显式禁止访问:location ~ /\.env { deny all; } - 屏蔽敏感路径:
location ~ ^/(app|config|database|vendor|runtime)/ { deny all; }
上线前必须清理与验证
本地残留内容会直接导致线上异常:
- 上传前删除本地
runtime/全部内容(保留空目录结构即可) - 确认
.env中APP_DEBUG=false、APP_ENV=production,数据库配置暂留占位值,待宝塔/Nginx 配置完再填 - 上传后立即执行:
chmod -R 755 runtime public/uploads和chmod 644 .env - 放一个
info.php到 public 目录测试 PHP 是否就绪:<?php phpinfo(); ?>,能访问即说明 Nginx+PHP-FPM 链路通
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











