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

Laravel 10应用Ubuntu服务器缓存文件打开失败排查求助

调试思路

1. 排查缓存驱动问题

  • 先确认.env中CACHE_DRIVER是否为默认的file,临时切换为array驱动(仅用于测试,不适合生产环境),观察2小时后是否复现问题:
    CACHE_DRIVER=array
    
  • 若切换后问题消失,说明文件缓存的生命周期管理存在异常;若仍出现问题,需排查业务代码中的缓存逻辑。

2. 监控缓存文件变化

  • 创建监控脚本monitor_cache.sh跟踪缓存目录的文件状态:
    #!/bin/bash
    while true; do
      date >> /var/log/cache_monitor.log
      ls -la /var/laravel-project/storage/framework/cache/data >> /var/log/cache_monitor.log
      sleep 3600 # 每小时记录一次
    done
    
  • 赋予执行权限并后台运行:
    chmod +x monitor_cache.sh
    nohup ./monitor_cache.sh &
    
  • 问题复现时,对比日志查看目标缓存文件是被提前删除,还是从未创建。

3. 检查系统自动清理机制

  • 排查服务器是否有tmpwatch、systemd-tmpfiles-clean等自动清理服务,这类服务可能误删Laravel缓存文件:
    • 查看tmpwatch配置:cat /etc/cron.daily/tmpwatch
    • 查看systemd-tmpfiles规则:cat /usr/lib/tmpfiles.d/*.conf | grep -E '(storage|cache)'
  • 若发现规则包含storage/framework/cache目录,修改规则排除该路径。

4. 核对缓存过期配置

  • 检查.env中CACHE_TTL是否设置过短,或代码中是否存在手动设置极短缓存时效的逻辑:
    CACHE_TTL=3600 # 默认3600秒,确认未被修改为7200以内的值
    
  • 搜索项目代码,排查是否有类似Cache::put('key', 'value', 300);这类短时效缓存操作,尤其是认证相关的缓存逻辑。

5. 确认进程权限与文件所有者匹配

  • 虽然已设置777权限,仍需确认PHP-FPM/Web服务器(Nginx/Apache)的运行用户与项目文件所有者是否一致:
    • 查看PHP-FPM运行用户:ps aux | grep php-fpm
    • 查看项目目录所有者:ls -ld /var/laravel-project
  • 若不一致,修正权限(推荐chown -R www-data:www-data /var/laravel-project,再给storage目录设置775权限),避免文件创建后因权限问题无法访问。

6. 启用Laravel缓存日志

  • 修改config/logging.php,新增缓存专用日志通道:
    'cache' => [
        'driver' => 'single',
        'path' => storage_path('logs/cache.log'),
        'level' => 'debug',
    ],
    
  • 在.env中设置LOG_CHANNEL=stack,并将cache通道加入stack配置:
    'stack' => [
        'driver' => 'stack',
        'channels' => ['single', 'cache'],
        'ignore_exceptions' => false,
    ],
    
  • 问题复现时,查看storage/logs/cache.log,分析缓存的创建、读取、删除操作是否存在异常。

7. 检查文件系统一致性

  • 运行文件系统检查,确认存储项目的磁盘是否存在IO错误或文件系统损坏:
    fsck /dev/your-disk-partition
    
  • 注意:执行前需卸载分区或进入单用户模式,避免损坏数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:15:14