怎么清理PHP本地环境缓存文件_PHP本地环境清缓存文件技巧【清理】

PHP本地环境缓存未清理会导致代码修改无效、Composer报错、Artisan命令失效及OPcache逻辑异常;需按顺序清理Laravel配置/通用/视图/路由缓存,同时处理OPcache、APCu、Composer自动加载及Web服务器缓存。

PHP 本地环境的缓存文件不清理,会导致修改代码后页面没变化、composer install 报错、php artisan config:clear 失效,甚至 opcache 缓存旧字节码引发逻辑异常——这不是代码问题,是缓存没清干净。

查清缓存类型再动手

PHP 本地环境(如 XAMPP、MAMP、Docker、或自己编译的 LAMP)可能同时存在多层缓存,每种清理方式和路径都不同:

  • OPcache:PHP 内置字节码缓存,需重启 Web 服务或调用 opcache_reset()
  • APCu:用户数据缓存,用 apcu_clear_cache() 或访问 apc.php 管理页
  • Laravel 框架缓存:storage/framework/cachebootstrap/cache/config.php 等,必须用命令清
  • Composer 自动加载缓存:vendor/composer/autoload_classmap.phpautoload_static.php,改完 composer.json 后要重生成
  • Web 服务器级缓存(如 Apache 的 mod_cache 或 Nginx 的 fastcgi_cache):本地开发一般不启用,但若手动配过就得删对应目录

Laravel 项目必清的 4 个缓存位置

很多“改了配置不生效”其实只清了 config:clear,漏掉了其他关键缓存。按顺序执行才可靠:

php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear

注意:php artisan optimize:clear(Laravel 9+ 已弃用)不能替代以上四条;storage/framework/cache 目录下如果还有 data 子目录,也建议手动 rm -rf storage/framework/cache/* —— 某些第三方包会绕过 Artisan 直接写这里。

OPcache 清理不能只靠重启 PHP-FPM

在本地开发中,即使你改了 php.ini 关掉 opcache.enable=0,旧缓存仍可能残留。更稳妥的做法是:

  • 确认 OPcache 启用:php -i | grep opcache 查看 opcache.enableopcache.revalidate_freq
  • 临时清空:在浏览器访问一个含 opcache_reset(); 的 PHP 文件(如 http://localhost/opcache-reset.php),内容仅一行:
  • 开发时建议设 opcache.revalidate_freq=0(每次请求都校验文件时间戳),避免反复手动清
  • Windows 下用 XAMPP/MAMP,重启 Apache 不等于重启 PHP 进程,有时需单独重启 PHP 服务或整个控制面板

Composer autoload 缓存错位导致 Class not found

当你新增类、改命名空间、或切换分支后报 Class XXX not found,大概率是 Composer 的 autoloader 缓存没更新:

  • 先运行 composer dump-autoload -o(带优化参数,生成静态映射)
  • 如果仍报错,检查 vendor/composer/autoload_classmap.php 是否包含你的新类路径;没有就说明 composer.json"autoload" 配置有误或未执行 dump
  • 极端情况可删掉整个 vendor/composer.lock,再 composer

    install
    —— 别怕慢,本地环境值得花这 20 秒确保干净

真正麻烦的是混合使用了 PSR-4 + classmap + files 多种 autoload 方式,又没跑全量 dump,这时候缓存行为很难预测。