先查 storage/framework/cache/、vendor/composer/ 等目录空间占用,再依次清理 OPcache(重启进程或访问 opcache-reset.php)、Laravel 缓存(含第三方包独立目录)、Composer 自动加载文件,并执行 composer dump-autoload 重建。

phpEnv 本地环境报 Disk full 错误,不是磁盘真满了,而是缓存文件(尤其是 OPcache、Composer autoload、Laravel storage)在反复重装/调试中无清理积累所致。直接删错目录可能破坏环境,必须按层定位、精准清理。
先查哪块占了空间:du -sh ./storage/framework/* 和 du -sh ./vendor/composer/*
phpEnv 默认使用 Windows(XAMPP/MAMP 风格)或 Linux Docker 模式,但不管哪种,缓存膨胀主因是:
-
storage/framework/cache/下的data/子目录 —— 第三方包(如 Laravel Telescope、Horizon)绕过 Artisan 直接写入,php artisan cache:clear不清这里 -
vendor/composer/autoload_classmap.php和autoload_static.php—— Composer install/update 失败后残留的巨型临时文件,有时超百 MB -
storage/framework/views/—— Blade 编译文件不自动清理,尤其开启APP_DEBUG=false后会越积越多 - OPcache 字节码没重置,PHP 进程持续占用内存映射页,
df -h看不到但lsof +L1能发现“deleted”状态的大文件
OPcache 占用不释放:不能只靠重启 phpEnv 控制面板
Windows 下 phpEnv 的“重启 PHP”按钮通常只 reload 配置,不 kill 并重建 PHP-CGI 进程,旧 OPcache 内存块仍被持有。更可靠的做法:
- 确认 OPcache 启用:
php -i | findstr opcache(Win)或php -i | grep opcache(Linux/macOS),检查opcache.enable是否为On - 写一个临时页面
opcache-reset.php放到 webroot 下,内容仅一行:<?php opcache_reset(); ?>,浏览器访问一次 - 开发阶段建议改
php.ini:opcache.revalidate_freq=0,避免每次改代码都要手动清 - 若仍卡住,任务管理器(Win)或
ps aux | grep php(Linux/macOS)杀掉全部php-cgi或php-fpm进程再启
Laravel 缓存命令失效?漏掉了 bootstrap/cache/ 外的硬编码路径
php artisan config:clear 只删 bootstrap/cache/config.php,但有些包(如 laravel-debugbar、spatie/laravel-backup)会在 storage/framework/cache/data/ 或 storage/app/debugbar/ 下建独立目录,Artisan 不管这些。
立即学习“PHP免费学习笔记(深入)”;
- 手动清空:
rm -rf storage/framework/cache/*(Linux/macOS)或del /q storage\framework\cache\*(Win) - 特别注意
storage/framework/sessions/—— 大量 session 文件堆积也会吃空间,可安全清(开发环境无影响) - 如果用了 Redis 作缓存驱动,别忘了
redis-cli -p 6379 FLUSHDB,phpEnv 默认 Redis 端口是 6379 - 执行完记得
composer dump-autoload,否则类加载可能报错
Composer 自动加载缓存爆满:删 vendor/composer/ 前先 composer clear-cache
Composer 自身有全局缓存(~/.composer/cache/),但本地 vendor/composer/ 下的 autoload 文件是项目级的。常见陷阱:
-
composer install中断后,autoload_classmap.php可能写到一半,变成几百 MB 的损坏文件 - 不要直接
rm -rf vendor再composer install—— phpEnv 下 vendor 依赖常含 Windows 路径或扩展 DLL,重装易出错 - 先运行:
composer clear-cache清全局缓存;再进项目目录:composer dump-autoload --optimize重建 autoload,比重装轻量得多 - 若仍失败,删
vendor/composer/autoload_*.php所有文件(留installed.json),再composer dump-autoload
真正卡住的点往往不在命令本身,而在 phpEnv 的多层缓存嵌套:OPcache 持有内存、Composer 写坏 autoload、Laravel 包直写 storage —— 任何一个环节没清,Disk full 就会反复出现。动手前先 du -sh 定位最大目录,比盲目跑命令有用得多。



















