CodeIgniter 3网站/tmp目录满致写入失败问题求助
解决/tmp目录占满导致CodeIgniter Session写入失败的问题
临时应急:释放/tmp空间
- 执行命令清理7天前的临时文件(安全且快速):
find /tmp -type f -mtime +7 -delete - 若有cPanel文件管理器权限,可直接进入/tmp目录,手动删除大体积或明显过期的文件(注意避开正在被进程占用的文件)。
定位占用根源
- 找出/tmp里占用空间最大的文件/目录:
du -sh /tmp/* - 查看正在使用/tmp文件的进程,避免误删:
lsof /tmp - 重点检查CodeIgniter的session文件(命名格式为
ci_session_*),若大量堆积,说明session过期时间过长或垃圾回收机制失效。
优化CodeIgniter Session配置
修改application/config/config.php中的session相关参数:
- 缩短session过期时间,根据业务需求调整,比如:
$config['sess_expiration'] = 3600; // 1小时,默认7200秒 - 启用session垃圾回收,调整触发概率:
$config['sess_gc_probability'] = 1; $config['sess_gc_divisor'] = 100; // 每100次请求触发1次垃圾回收 - 更换session存储路径到有剩余空间的目录,比如在网站根目录创建
sessions文件夹(权限设为700),然后配置:$config['sess_save_path'] = '/home/your_cpanel_username/public_html/sessions';
服务器层面调整(需Root权限)
- 扩容/tmp临时文件系统(针对独立VPS/服务器):
- 先卸载/tmp(确保无进程占用,否则先终止相关进程):
umount /tmp - 创建更大的临时镜像文件(示例为8G,按需调整):
dd if=/dev/zero of=/tmp.img bs=1G count=8 - 格式化镜像:
mkfs.ext4 /tmp.img - 重新挂载:
mount /tmp.img /tmp - 设置开机自动挂载,编辑
/etc/fstab添加:/tmp.img /tmp ext4 defaults,noatime 0 0
- 先卸载/tmp(确保无进程占用,否则先终止相关进程):
- 若不需要单独/tmp分区,可将/tmp挂载到剩余空间充足的分区(如/home下的子目录),注意设置权限为
1777(粘滞位)。
cPanel环境额外设置
- 进入cPanel的PHP配置界面,确保
php.ini中的session.gc_maxlifetime值与CodeIgniter的sess_expiration一致,避免回收机制冲突。 - 开启cPanel的「临时文件清理」功能,配置定期清理规则,自动删除/tmp的过期文件。
内容的提问来源于stack exchange,提问作者ASHafizullah
相关产品推荐
相关产品推荐

