ThinkPHP 3.2 启动时必须初始化存储驱动,否则缓存操作报错或静默失败;STORAGE_TYPE 取值限于 'File'、'Memcache'、'Redis'、'Xcache'、'Apc',未定义则默认 'File';Redis 驱动需启用 phpredis 或配置 Predis,并强制关闭 session.auto_start。

ThinkPHP 3.2 在应用启动时必须完成存储初始化,否则 Cache::get()、S() 等缓存操作会直接报错或静默失败,且部分内置功能(如模板编译、日志写入)将无法正常工作。
确认 STORAGE_TYPE 配置值
打开项目根目录下的 ThinkPHP/Common/Conf/core.php 或应用级配置文件(如 Application/Common/Conf/config.php),查找 STORAGE_TYPE 常量定义。该常量决定底层存储驱动类型,取值只能是:'File'、'Memcache'、'Redis'、'Xcache'、'Apc' 中的一个。
若未显式定义,框架默认使用 'File' —— 这意味着你无需额外安装扩展,但并发写入性能差、不支持跨服务器共享。
File 驱动:零依赖,适合开发与单机部署
确保 Runtime/Cache/ 目录存在且 Web 进程有写权限(Linux 下常用 chmod -R 755 Runtime/);该目录路径由 CACHE_PATH 常量控制,默认为 RUNTIME_PATH.'Cache/'。
立即学习“PHP免费学习笔记(深入)”;
File 驱动不校验磁盘空间或 inode 数量,当缓存项过多时可能触发“Too many open files”系统错误;此时需手动清空 Runtime/Cache/ 下子目录,或改用 Redis。
Redis 驱动:需扩展支持,强制要求 session.auto_start = Off
方法一:启用 phpredis 扩展后,在配置中写入:
define('STORAGE_TYPE', 'Redis');define('REDIS_HOST', '127.0.0.1');define('REDIS_PORT', 6379);
方法二:若使用 Predis(纯 PHP 实现),需先通过 Composer 安装 predis/predis,再在配置中指定:
define('STORAGE_TYPE', 'Redis');define('REDIS_CLASS', 'Predis\Client');
【必须关闭 session.auto_start】 否则 Redis 连接会在框架初始化前被 session 模块抢占,导致 Storage 初始化时连接失败且无明确报错。
Memcache 驱动:注意端口与扩展版本兼容性
第一步:确认已加载 memcache(非 memcached)扩展,执行 php -m | grep memcache 验证;
第二步:配置中设置 define('STORAGE_TYPE', 'Memcache');;
第三步:确保 MEMCACHE_HOST 和 MEMCACHE_PORT 指向正在运行的 Memcached 实例,默认端口是 11211;
第四步:若使用 Memcached 1.6+ 且开启 SASL 认证,则此驱动不可用——ThinkPHP 3.2 的 Memcache 驱动不支持 SASL。



















