ThinkPHP 5.x对 PHP版本的要求及注意点

1.ThinkPHP 5.x

  • ThinkPHP 5.0

    • 最低:PHP 5.4
    • 推荐:PHP 5.6 / 7.0
    • ❌ 已停止维护,不建议任何新生产使用
  • ThinkPHP 5.1(LTS)

    • 最低:PHP 5.6
    • 推荐:PHP 7.2 / 7.3 / 7.4
    • ❌ 不建议 PHP 8.x(存在大量兼容问题)

生产结论一句话:
👉 TP 5.x 生产 = 5.1 + PHP 7.4


2.ThinkPHP 5.x 的架构特征

2.1 核心设计特点

  • 仍是 “传统 PHP Web 框架”
  • 强依赖 PATHINFO
  • 自动加载、容器、事件系统 不如 6.x 纯净
  • 框架层逻辑更“厚”,单请求开销略大于 6.x

2.2 5.x 与 6.x 的关键差别

维度 ThinkPHP 5.1 ThinkPHP 6.x
PHP 最佳版本 7.2–7.4 7.4
PATHINFO 强依赖 不依赖
入口规范 宽松 强制 public
Composer 可选 强制
中间件 半成品 完整
高并发友好度

所以:
TP5 能跑高并发,但你要帮它“减负”


3.ThinkPHP 5.x 的标准生产部署

3.1 目录结构(生产必须这样)

1
2
3
4
5
6
7
8
/var/www/tp5
├── application
├── public # 请求入口
│ └── index.php
├── runtime # 必须可写
├── thinkphp
├── vendor
└── think

生产铁律:

  • Nginx / OpenResty rootpublic
  • runtime/ 必须归 PHP-FPM 用户

注意:运行权限问题


4.OpenResty + 多 PHP-FPM

4.1 整体架构

flowchart LR
    Client --> OpenResty
    OpenResty --> FPM_A
    OpenResty --> FPM_B
    OpenResty --> FPM_C
    FPM_A --> TP5
    FPM_B --> TP5
    FPM_C --> TP5

TP5 不怕多 FPM,它怕的是:

  • 日志
  • Trace
  • IO
  • 单池阻塞

5.OpenResty 对 ThinkPHP 5.x配置

5.1 upstream(多 PHP-FPM)

1
2
3
4
5
6
7
upstream php_tp5 {
least_conn;
server 127.0.0.1:9011;
server 127.0.0.1:9012;
server 127.0.0.1:9013;
keepalive 32;
}

5.2 server 配置(重点在 PATHINFO)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
listen 80;
server_name api.example.com;

root /var/www/tp5/public;
index index.php;

# 必须这样写
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
}
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_index index.php;
fastcgi_pass php_tp5;
}
}

这段 rewrite 是 TP5 的灵魂,没它,路由 404 会像雪崩一样来


6.PHP-FPM 多实例

6.1 为什么 TP5 更需要多池

  • 单请求内初始化逻辑多
  • ORM、Config、Log 都偏重
  • worker 被慢 SQL 卡住非常常见

6.2 示例

1
2
3
4
5
6
7
[tp5_api]
listen = 127.0.0.1:9011
pm = dynamic
pm.max_children = 40
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
1
2
3
4
[tp5_admin]
listen = 127.0.0.1:9012
pm = dynamic
pm.max_children = 15
1
2
3
4
[tp5_task]
listen = 127.0.0.1:9013
pm = ondemand
pm.max_children = 20

7. ThinkPHP 5.x 高并发

7.1 必须关的东西

  • APP_DEBUG = false
  • APP_TRACE = false
  • SQL 日志
  • 请求日志(除 error)

7.2 OPcache(比 6.x 更重要)

1
2
3
4
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=80000
opcache.validate_timestamps=0

TP5 不开 OPcache,性能直接腰斩。