必须先确认phpenv实际加载的php.ini路径:cli模式用php --ini,fpm模式用php-fpm -i | grep "loaded configuration file"或phpinfo();realpath_cache_size建议设为4096k(4mb),配合realpath_cache_ttl=3600,并重启php-fpm生效。

直接改 php.ini 里的 realpath_cache_size 就行,但必须确认你改的是 phpEnv 当前实际加载的配置文件,否则改了等于没改。
怎么找到 phpEnv 正在用的 php.ini
phpEnv 是多版本共存环境,每个 PHP 版本都有独立的 php.ini,不能只改系统默认路径下的文件。常见错误是编辑了 /etc/php/8.1/cli/php.ini,结果 Web 请求走的是 FPM 模式,真正生效的是 /etc/php/8.1/fpm/php.ini。
- 运行
php --ini查看 CLI 模式加载路径 - 运行
php-fpm -t && php-fpm -i | grep "Loaded Configuration File"或新建一个info.php放入 Web 目录,内容为<?php phpinfo(); ?>,访问后搜索 “Loaded Configuration File” 确认 FPM 加载的php.ini - 如果你用的是 phpEnv 的 Web 面板(如小皮、AMPHP 等),通常在“PHP 设置”页里点“编辑配置”会自动打开对应版本的 FPM 配置文件
realpath_cache_size 设多少才够用
设太小会导致缓存频繁淘汰,设太大浪费内存——关键看项目自动加载路径深度和文件数量。Composer 项目(如 Laravel、ThinkPHP)常有 vendor/autoload.php → vendor/composer/ClassLoader.php → … 多层相对路径解析,realpath() 调用密集。
- 默认值通常是
4096(字节),远远不够;建议起步设为4096K(即 4MB) - 若项目含大量第三方包或路径嵌套深(比如
../../config/../src/这类写法),可试8192K - 不建议无脑设到
16M以上:缓存本身是哈希表,过大反而增加查找开销,且对小内存 VPS 不友好 - 配合
realpath_cache_ttl=3600(1 小时),避免因文件移动/重命名导致路径失效却长期缓存
改完不重启 PHP-FPM 就不生效
phpEnv 修改配置后,仅保存文件不会触发重载。尤其要注意:CLI 和 FPM 是两个独立进程,改完 php.ini 后必须重启对应服务。
- 如果是 phpEnv 自带的控制面板,点“重启 PHP”按钮即可(它通常会同时 reload FPM 和刷新 CLI 缓存)
- 命令行操作:先确认进程名,例如
sudo systemctl restart php8.1-fpm或sudo service php8.1-fpm restart - 验证是否生效:执行
php -r "echo realpath_cache_size();",输出应为设置的字节数(如4194304表示 4MB) - 注意:某些 phpEnv 版本在切换 PHP 版本时会覆盖自定义
php.ini,建议备份修改后的配置文件
最容易被忽略的一点:框架启动阶段大量 require_once 和自动加载器初始化,正是 realpath_cache 发挥作用的黄金时段;但如果项目里还混着 __DIR__.'/../' . $file 这种动态拼接路径,缓存就无法命中——这类写法得统一改成 dirname(__DIR__) . '/' 或提前计算好绝对路径再缓存变量。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











