You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter 3缓存写入失败求助:缓存目录无生成文件

解决CodeIgniter 3缓存无法写入文件的问题

1. 排查APC驱动的可用性

你配置了adapter => 'apc'作为主缓存驱动,但APC扩展在Windows环境下支持性极差,多数Windows服务器默认未安装该扩展。如果APC驱动不可用,CodeIgniter可能无法正常切换到备份的file驱动,直接导致缓存操作失败。

  • 执行var_dump(extension_loaded('apc'));或查看phpinfo()输出,确认APC扩展是否安装启用。
  • 若未安装APC,直接将主驱动改为file测试:
    $this->load->driver('cache', array('adapter' => 'file'));
    

2. 明确指定缓存目录路径

你设置的$config['cache_path'] = '',虽然CodeIgniter会默认使用application/cache,但Windows下的路径解析可能存在问题,手动指定绝对路径更可靠:

// 指向application/cache目录,确保末尾带斜杠
$config['cache_path'] = APPPATH . 'cache/';

3. 处理phpspreadsheet对象的序列化问题

缓存驱动保存数据时会自动序列化内容,但phpspreadsheet生成的Spreadsheet对象可能包含无法序列化的资源(如临时文件句柄),导致缓存写入失败。可以将对象转为可序列化的二进制数据再缓存:

// 将电子表格转为字节流
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($data);
ob_start();
$writer->save('php://output');
$spreadsheetData = ob_get_clean();

// 缓存处理后的字节流
$this->cache->save($cacheKey, $spreadsheetData, 150);

4. 开启CI日志排查错误

在application/config/config.php中开启日志,查看缓存操作的具体错误信息:

$config['log_threshold'] = 2; // 记录错误与调试信息

查看application/logs下的日志文件,搜索cache相关条目,定位具体失败原因。

5. 单独验证file驱动功能

暂时完全禁用APC,仅使用file驱动测试基础功能:

$this->load->driver('cache', array('adapter' => 'file'));
// 写入简单测试数据
$this->cache->save('test_key', 'test_content', 60);

如果此操作能生成缓存文件,说明问题出在APC驱动或phpspreadsheet对象的序列化上;若仍失败,需再次确认缓存目录的权限(比如IIS应用池用户是否拥有该目录的写入权限)。


内容的提问来源于stack exchange,提问作者owf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 03:50:04