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

Laravel 11中migrate正常但应用无法找到SQLite数据库的问题

Laravel 11: migrate正常但应用无法找到SQLite数据库文件

核心原因

migrate能正常执行但Web应用报错,本质是CLI命令(artisan)和Web服务器的运行环境/权限完全不同:

  • artisan由你通过SSH登录的用户(如root、个人用户)执行,该用户对数据库文件有完整读写权限
  • Web应用由nginx/apache的系统用户(如www-data、nginx)运行,这个用户可能没有访问SQLite文件的权限,或者无法正确加载环境配置

解决方案

1. 修复文件权限与所属用户组

不要用过于开放的776权限,给Web服务器用户分配合理的访问权限:

  1. 先确认Web服务器的运行用户:

    # 查看Nginx运行用户
    ps aux | grep nginx | head -1
    # 查看Apache运行用户
    ps aux | grep apache2 | head -1
    

    输出第一个字段即为运行用户(通常是www-data)

  2. 修改数据库文件和目录的所属组:

    chgrp www-data /var/www/sites/website.com/database/database.sqlite
    chgrp www-data /var/www/sites/website.com/database
    
  3. 设置安全的权限:

    # 文件权限:所有者/组读写,其他只读
    chmod 664 /var/www/sites/website.com/database/database.sqlite
    # 目录权限:所有者/组读写执行,其他读执行
    chmod 775 /var/www/sites/website.com/database
    

2. 验证Web环境的配置加载

有时候Web服务器无法正确读取.env文件,导致配置未生效:

  1. 在routes/web.php中临时添加调试代码:
    dd(config('database.connections.sqlite_cache'));
    
  2. 访问网站首页,查看输出的数据库配置路径是否和.env中设置的一致。
  3. 如果路径不对:
    • 检查.env文件权限(设置为644,确保Web服务器能读取)
    • 确认Web服务器配置中没有限制读取该目录的文件

3. 排查SELinux/AppArmor安全限制

多数Linux发行版默认开启安全模块,会阻止Web服务器访问非标准目录:

针对SELinux(CentOS/RHEL系)

  1. 临时关闭SELinux测试:
    setenforce 0
    
    如果网站恢复正常,添加持久化规则:
    semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/sites/website.com/database(/.*)?"
    restorecon -Rv /var/www/sites/website.com/database
    

针对AppArmor(Debian/Ubuntu系)

  1. 检查AppArmor状态:
    sudo aa-status
    
  2. 如果nginx/apache的profile处于enforcing状态,编辑对应配置文件(如/etc/apparmor.d/usr.sbin.nginx),添加允许访问规则:
    /var/www/sites/website.com/database/database.sqlite rw,
    
  3. 重新加载规则:
    sudo systemctl reload apparmor
    

4. 确认路径的绝对正确性

Linux系统对路径大小写敏感,检查以下几点:

  • 确认.env中的路径/var/www/sites/website.com/database/database.sqlite拼写完全正确(包括大小写)
  • 用ls -l /var/www/sites/website.com/database/database.sqlite验证文件确实存在,无软链接指向错误位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:53:10