我的CodeIgniter4项目无法连接数据库怎么办?
兄弟,我太懂你折腾三小时的崩溃感了!刚上手CI4就碰到数据库连不上的问题,尤其是在Namecheap这种共享主机上,确实容易踩一堆配置坑,我来给你捋捋最实用的排查和解决步骤:
先死磕数据库基础信息,别犯低级错误
Namecheap的cPanel数据库命名规则有坑!数据库名、用户名都是带主机用户名前缀的,比如你本地用的是ci4_db,到了主机上得是yourusername_ci4_db(yourusername是你cPanel的登录用户名),千万不能直接抄本地的短名字。另外主机地址别瞎改,Namecheap共享主机一般用localhost就行,密码要仔细核对,别把本地的密码直接搬过来,注意大小写和特殊字符。盯紧CI4的配置文件,别用本地配置凑数
CI4靠.env文件管配置,你得确保主机上的.env是针对生产环境改好的,不是本地的备份!直接在.env里写数据库配置最省心,格式如下:database.default.hostname = "localhost" database.default.database = "yourusername_yourdbname" database.default.username = "yourusername_yourdbuser" database.default.password = "yourdbpassword" database.default.DBDriver = "MySQLi"另外注意项目部署结构!Namecheap子域名的根目录是
/home/user/example.tgsoftware.services,正确的做法是把CI4public文件夹里的所有文件移到这个根目录,然后把CI4的核心文件(app、system、.env这些)放在/home/user/下面,再修改根目录里的index.php,把$pathsPath指向正确的app/Config/Paths.php路径,不然配置文件根本读不到!别漏了数据库用户授权这一步
去cPanel的「MySQL Databases」页面,找到你创建的数据库用户,一定要把它和目标数据库关联起来,并且授予必要的权限(至少选SELECT、INSERT、UPDATE、DELETE,或者直接给ALL PRIVILEGES)。很多人光建了用户和数据库,没做关联,那肯定连不上,这是新手最容易踩的坑!测测基础连接,排除CI4的锅
写个超简单的PHP测试文件test_db.php,放在你的子域名根目录里,内容如下:<?php $conn = mysqli_connect("localhost", "yourusername_yourdbuser", "yourdbpassword", "yourusername_yourdbname"); if (!$conn) { die("连接失败: " . mysqli_connect_error()); } echo "连接成功!"; mysqli_close($conn); ?>访问这个文件,如果连这个都连不上,那就是数据库本身的问题(信息错了、权限没开),和CI4没关系;如果这个能连上,那就是CI4的配置或者路径有问题,回头再查
.env和项目结构。最后检查PHP版本和文件权限
CI4要求PHP 7.4以上,去cPanel的「Select PHP Version」里确认你选的版本符合要求。另外,CI4的writable目录权限设为755就行,.env文件权限设为644,确保服务器能读取但不会被公开访问,权限不对也可能导致配置加载失败。
按照这些步骤一步步来,大概率能找到问题所在,刚上手CI4在共享主机部署确实容易踩配置的坑,慢慢来哈!
备注:内容来源于stack exchange,提问作者Tygo Iedema

