OPcache 必须在 PHP 配置中启用,而非 trae;需在 php.ini 或 PHP-FPM 配置中设置 opcache.enable=1,重启 PHP-FPM 后用 phpinfo() 或 opcache_get_status() 验证。

OPcache 不能靠 trae 配置开启——trae 是个前端代理工具,不参与 PHP 运行时配置,它根本读不到 opcache.enable 这类 ini 指令。
PHP 的 OPcache 必须在 php.ini 或 fpm 配置中启用
trae 只负责把请求转发给 PHP-FPM(或内置服务器),OPcache 是 PHP 解释器自身的字节码缓存模块,启动阶段就由 PHP 自己加载。你改 trae 配置文件,对 OPcache 完全没影响。
-
opcache.enable=1必须写在 PHP 的主配置里,常见位置:/etc/php/*/fpm/php.ini、/usr/local/etc/php/php.ini(macOS Homebrew)、或php --ini显示的 Loaded Configuration File - 如果用 PHP-FPM,还要确认
opcache.enable_cli=0(CLI 下默认关)和opcache.preload(如需预加载)等参数是否按需设置 - 改完必须重启 PHP-FPM:例如
sudo systemctl restart php*-fpm或brew services restart php;只重启 trae 没用
trae 转发到 PHP-FPM 时,得确保 FastCGI 参数正确
trae 本身不处理 PHP,但它要把请求以 FastCGI 协议发给 PHP-FPM。如果这步出错,即使 OPcache 已启用,你也看不到效果(甚至 502)。
- 检查 trae 配置中
fastcgi_pass是否指向正确的 PHP-FPM socket 或地址,比如127.0.0.1:9000或unix:/var/run/php/php8.2-fpm.sock - 确认 PHP-FPM 的
www.conf中listen和listen.owner/listen.group权限匹配,否则 trae 连不上,直接报connect() failed (111: Connection refused) - trae 日志里若出现
upstream prematurely closed FastCGI stdout,大概率是 PHP-FPM 崩了或超时,和 OPcache 无关,但会掩盖真实问题
验证 OPcache 是否真生效,别只看 trae 日志
trae 日志里没有 OPcache 状态信息。要确认 OPcache 起作用,必须进 PHP 环境查:
立即学习“PHP免费学习笔记(深入)”;
- 写个
info.php:,浏览器打开后搜索 “OPcache”,看到 “Opcode Caching => Enabled” 才算成功 - 用 CLI 快速验证:
php -i | grep opcache,重点看opcache.enable和opcache.status是否为enabled - 更进一步,访问
opcache_get_status()返回数组里的opcache_enabled和memory_usage字段,能确认缓存是否在积累
很多人卡在“改了 trae 就以为配好了”,结果 OPcache 根本没加载。真正关键的三步是:改对 php.ini → 重启 PHP-FPM → 用 phpinfo() 或 opcache_get_status() 验证。trae 只是流量入口,它不碰 PHP 的任何扩展开关。











