用CodeIgniter框架从零搭建可运行Web项目需完成环境准备、目录初始化、基础配置、控制器与视图联动、数据库接入五个环节:先验证PHP版本及扩展,配置Web服务器重写规则;再通过Composer或手动方式创建项目结构并设置.env;接着配置App.php的baseURL和Database.php的数据库连接参数;然后编写Home控制器与welcome视图实现页面访问;最后定义UserModel模型,查询users表并在视图中渲染数据。

用CodeIgniter框架从零开始搭建一个可运行的Web项目,需要完成环境准备、目录初始化、基础配置、控制器与视图联动、数据库接入五个关键环节,缺一不可。
确认PHP与Web服务器环境
CodeIgniter 4要求PHP 7.4及以上版本,且必须启用mbstring、curl、json和xml扩展。打开终端执行php -v和php -m | grep -E "mbstring|curl|json|xml"验证;若缺失任一模块,需通过包管理器安装(如Ubuntu下运行sudo apt install php-mbstring php-curl php-xml)。
Apache用户需确保mod_rewrite已启用,并在项目根目录放置.htaccess文件;Nginx用户则必须在server块中添加try_files $uri $uri/ /index.php?$query_string;重写规则。
这一步不满足,后续所有操作都将返回404或500错误。
创建项目结构并设置入口
方法一:使用Composer创建标准CI4项目
在命令行中执行composer create-project codeigniter4/appstarter myapp,等待自动解压依赖并生成完整目录树。
方法二:手动部署(仅适用于CI3或离线环境)
下载官方zip包→解压到Web根目录→重命名env为.env→用文本编辑器打开.env,取消注释CI_ENVIRONMENT = development并设为development。
【务必修改.env文件权限为644,否则CI4启动时会因无法读取环境变量而报错】
配置基础URL与数据库连接
第一步:编辑app/Config/App.php,找到$baseURL属性,将其值设为你的完整域名或本地地址,例如http://localhost/myapp/;路径末尾必须带斜杠。
第二步:打开app/Config/Database.php,在$default数组中填入MySQL连接参数:
'hostname' => 'localhost',
'username' => 'root',
'password' => 'your_password',
'database' => 'myapp_db',
'DBDriver' => 'MySQLi',
第三步:确保目标数据库myapp_db已在MySQL中手动创建,字符集设为utf8mb4,排序规则为utf8mb4_unicode_ci。
编写第一个可访问的控制器与视图
在app/Controllers目录下新建Home.php文件,内容如下:
<?php namespace App\Controllers; use CodeIgniter\Controller; class Home extends Controller { public function index() { return view('welcome'); } }
在app/Views目录下新建welcome.php文件,写入任意HTML内容,例如<h1>Hello CI4</h1>。
访问http://localhost/myapp/public/(注意是/public/子目录),页面应显示“Hello CI4”;若提示404,请检查app/Config/Routes.php中是否已将$routes->setDefaultController('Home');取消注释。
定义模型并查询数据库
① 在app/Models目录中创建UserModel.php,继承CodeIgniter\Model:
<?php namespace App\Models; use CodeIgniter\Model; class UserModel extends Model { protected $table = 'users'; }
② 修改Home.php控制器的index()方法,加入数据查询逻辑:
$model = new UserModel(); $users = $model->findAll(); return view('welcome', ['users' => $users]);
③ 确保数据库中存在users表,至少包含id和name字段;否则findAll()将抛出SQL异常。
④ 在welcome.php视图中添加<?php foreach ($users as $u): ?><p><?= esc($u['name']) ?></p><?php endforeach ?>渲染结果。


















