ThinkPHP8部署AI服务器时,静态资源必须放public/static/并由Nginx直供,API请求须绕过public/index.php入口;否则每次调用均加载全框架,造成毫秒级推理延迟。

ThinkPHP8项目部署到AI服务器时,静态资源请求和API请求混走public/index.php入口,会导致每次API调用都加载完整框架、解析全部路由、实例化容器——这对毫秒级响应的推理服务是致命延迟。必须让静态资源直通Web服务器,API请求绕过PHP-FPM生命周期,由Nginx提前终止并转发。
静态资源路径强制规范
所有CSS、JS、图片等静态文件【必须】放进public/static/目录下,例如public/static/js/main.js。不能放在app/、config/或runtime/里——这些目录Web服务器根本无法直读,浏览器请求直接返回404。
模板中引用静态资源时,禁用硬写路径,否则子目录部署(如https://example.com/myapp/)会全挂。正确写法是使用url()辅助函数:{:url('static/css/app.css', '', false)}。
这个false参数很关键,否则在开启url_html_suffix时,url()可能自动补.html后缀,导致/static/css/app.css.html 404。
立即学习“PHP免费学习笔记(深入)”;
Nginx配置静态资源直通
在Nginx配置中添加location块,让/static/路径不经过PHP处理:
location ^~ /static/ {
alias /var/www/myapp/public/static/;
expires 1y;
add_header Cache-Control "public, immutable";
}
注意alias末尾必须带斜杠,且路径要与实际public/static/物理位置完全一致。漏掉斜杠或路径错一位,所有静态资源404。
别自作主张建public/assets/或public/res/——除非你同步改了Nginx的location规则,并手动更新所有模板里的和<script>标签路径。</script>
API路由绕过index.php入口
第一步:确认Nginx已启用反向代理模块,且PHP-FPM监听地址为127.0.0.1:9000或unix socket。
第二步:在server块内添加API路径前置匹配:
location ^~ /api/v1/ {
proxy_pass http://127.0.0.1:8000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
第三步:启动独立HTTP服务监听8000端口,只加载TP的API模块——用php think run -p 8000 --no-debug --no-reload,该命令会跳过public/index.php,直接启动精简版HTTP服务器,仅注册route/api.php中的路由。
第四步:确保route/api.php中定义的路由不依赖app/下的全局中间件,所有鉴权、日志等逻辑需在该文件内显式绑定。若仍走public/index.php,每次请求都要加载全部框架——对低延迟要求高的推理链路是严重浪费。
第五步:验证时curl -I https://yourdomain.com/api/v1/users,响应头中不应出现X-Powered-By: PHP,且响应时间应稳定在5ms内。



















