ThinkPHP6清缓存提示“目录不存在”主因是runtime目录缺失、属主不匹配或父目录缺少执行权限(x位),需先用sudo -u www-data ls runtime验证Web用户访问权限,再通过chmod o+x runtime补x权限、sudo -u www-data mkdir -p重建子目录并固化chown/chmod权限策略。

ThinkPHP6执行清缓存命令时提示“目录不存在”,不是路径写错,而是runtime目录本身缺失、属主不匹配或父目录缺少执行权限——PHP进程连进入runtime的资格都没有,自然报“不存在”而非“不可写”。
确认runtime目录是否真实存在且可进入
在项目根目录执行ls -ld runtime,观察输出权限字段第三位(other位)是否含x;若为drw-r--r--,说明其他用户(包括www-data)无法cd进入该目录,【mkdir()失败的根本原因就在这里】。
运行ps aux | grep php-fpm,记下USER列的值(如www-data),后续所有操作必须以该用户身份进行。
执行sudo -u www-data ls runtime 2>/dev/null || echo "进入失败",直接验证Web用户能否访问runtime——失败则说明x权限缺失或属主错误,不能跳过这步直接删缓存。
用命令行安全清空缓存文件
方法一:仅清file驱动下的cache子目录(推荐)
执行php think clear:cache,该命令会精准遍历runtime/cache/及其子目录下的.php缓存文件,跳过log、temp、schema等非cache目录,避免误删。
方法二:手动清理但保留关键结构
先执行sudo -u www-data rm -f runtime/cache/*.php runtime/cache/*/*.php,再用sudo -u www-data find runtime/cache -type d -empty -delete清理空子目录;【绝不可rm -rf runtime/cache/】,否则可能连带删掉session或模板编译缓存导致页面白屏。
强制重建runtime目录结构
第一步:确保runtime父目录具备执行权限
运行chmod o+x runtime,补全other用户的x权限,这是PHP能调用mkdir runtime/model的前提。
第二步:由Web用户创建缺失的子目录
执行sudo -u www-data mkdir -p runtime/cache runtime/log runtime/view/runtime/schema,这一步比touch空文件更可靠,能同时建立完整路径并正确设置属主。
第三步:固化权限策略
运行sudo chown -R www-data:www-data runtime && sudo find runtime -type d -exec chmod 755 {} \; && sudo find runtime -type f -exec chmod 644 {} \;,确保目录可进入、文件可读取。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











