ThinkPHP 8.0在Ubuntu 22.04上需用Nginx 1.20与PHP 8.1,关键在伪静态规则、PHP-FPM Unix socket配置及TP8的PATH_INFO模式适配,root必须指向public目录。

Ubuntu 22.04 上用 Nginx 1.20 部署 ThinkPHP 8.0,关键不在装得多全,而在伪静态规则写对、PHP-FPM 路径配准、以及 ThinkPHP 自身的 URL 模式适配。默认安装的 Nginx(来自 apt)版本是 1.18,若明确需要 1.20,建议通过 Ondřej Surý 的 PPA 安装,而非源码编译——省去依赖折腾,也更稳定。
安装 Nginx 1.20 和 PHP 8.1
先添加官方维护的第三方仓库,获取新版软件:
- 执行:sudo add-apt-repository ppa:ondrej/nginx 和 sudo add-apt-repository ppa:ondrej/php
- 更新并安装:sudo apt update && sudo apt install nginx php8.1-fpm php8.1-mysql php8.1-curl php8.1-mbstring php8.1-xml php8.1-zip -y
- 确认版本:nginx -v 应输出 nginx version: nginx/1.20.x;php -v 应显示 PHP 8.1.x
配置 PHP-FPM 监听方式
ThinkPHP 8 默认使用 PATH_INFO 模式,Nginx 必须把请求正确传递给 PHP-FPM,并保留原始 URI。推荐用 Unix socket(比 127.0.0.1:9000 更高效且安全):
- 编辑:sudo nano /etc/php/8.1/fpm/pool.d/www.conf
- 找到 listen = /run/php/php8.1-fpm.sock(确保未被注释),并确认 listen.owner 和 listen.group 均为 www-data
- 重启服务:sudo systemctl restart php8.1-fpm
Nginx 站点配置 + ThinkPHP 伪静态规则
在 /etc/nginx/sites-available/ 下新建配置文件(如 tp8),启用 PATH_INFO 支持:
- 核心 location 块示例(替换 /var/www/tp8 为你的项目路径):
location / {
try_files $uri $uri/ /index.php?$query_string;
}
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~* ^/(?:application|config|common|extend|public\/static|runtime|vendor)\/ {
deny all;
}
- 启用配置:sudo ln -sf /etc/nginx/sites-available/tp8 /etc/nginx/sites-enabled/
- 测试并重载:sudo nginx -t && sudo systemctl reload nginx
ThinkPHP 8 侧必要设置
光靠 Nginx 不够,框架自身需匹配:
- 确保 config/app.php 中 'url_common' => false(关闭普通模式)
- 确认 'url_route_on' => true,路由必须开启
- 入口文件 public/index.php 无需改动,但需保证其为 Web 根目录(即 Nginx 的 root 指向 /var/www/tp8/public)
- 若访问出现 404 且日志提示 “No input file specified”,大概率是 SCRIPT_FILENAME 传错路径,检查是否漏了 $document_root
不复杂但容易忽略:TP8 的 public 目录必须是 Nginx root,且 .htaccess 无效(那是 Apache 的),所有重写逻辑都在 Nginx 配置里完成。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










