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

Ubuntu系统下XAMPP环境中CodeIgniter4连接PHP Mongo驱动的方法及安装扩展报错求助

解决Ubuntu下XAMPP(PHP8.1)安装MongoDB扩展及CodeIgniter4连接问题

你碰到的核心问题是系统默认调用PHP7.4的环境工具,而XAMPP的PHP8.1专属工具(包括phpize)不在系统PATH里,导致pecl找不到正确的编译工具。另外你看到的phpize.1是手册文件(.1是Linux man手册的后缀),不是实际可执行的phpize工具,别搞混啦。下面一步步帮你解决:

1. 确认XAMPP的phpize工具位置

先打开终端,进入XAMPP的bin目录验证工具存在:

cd /opt/lampp/bin
ls -la | grep phpize

你应该能看到不带.1后缀的phpize文件,这才是我们需要的编译工具。

2. 用XAMPP环境安装MongoDB扩展

要给XAMPP的PHP8.1装扩展,必须用它自带的phpize和php-config,不能用系统PHP7.4的工具。这里有两种可行方法:

方法一:临时切换到XAMPP的环境

把XAMPP的bin目录临时加到系统PATH最前面,让终端优先调用XAMPP的工具:

export PATH=/opt/lampp/bin:$PATH
# 现在执行扩展安装
pecl install mongodb

方法二:手动指定工具路径

如果不想修改系统PATH,直接在pecl命令里明确指定XAMPP的工具路径:

pecl install --phpize /opt/lampp/bin/phpize --php-config /opt/lampp/bin/php-config mongodb

安装过程中如果提示依赖缺失(比如gcc、make等编译工具),先安装系统依赖包:

sudo apt install build-essential autoconf libssl-dev

3. 启用MongoDB扩展并验证

安装完成后,需要让XAMPP的PHP加载这个扩展:

  1. 编辑XAMPP的PHP配置文件:
sudo nano /opt/lampp/etc/php.ini
  1. 在文件末尾添加一行配置:
extension=mongodb.so
  1. 重启XAMPP的Apache服务:
sudo /opt/lampp/lampp restart apache
  1. 验证扩展是否生效:在XAMPP的htdocs目录新建phpinfo.php文件,内容为:
<?php phpinfo(); ?>

访问http://localhost/phpinfo.php,搜索mongodb,如果能看到对应的模块信息,说明扩展安装成功。

4. 在CodeIgniter4中配置MongoDB连接

接下来完成CI4与MongoDB的对接:

  1. 进入你的CI4项目根目录,通过Composer安装MongoDB官方PHP库:
cd /path/to/your/ci4-project
composer require mongodb/mongodb
  1. 打开app/Config/Database.php,新增一个MongoDB连接配置(也可以修改默认连接):
public $mongo = [
    'DSN'          => '',
    'hostname'     => 'localhost',
    'username'     => '', // 若MongoDB设置了用户名则填写,否则留空
    'password'     => '', // 对应数据库密码
    'database'     => 'your_db_name', // 你的目标数据库名
    'DBDriver'     => 'MongoDB',
    'DBPrefix'     => '',
    'pConnect'     => false,
    'DBDebug'      => true,
    'cacheOn'      => false,
    'cacheDir'     => '',
    'charset'      => 'utf8',
    'DBCollat'     => 'utf8_general_ci',
    'swapPre'      => '',
    'encrypt'      => false,
    'compress'     => false,
    'strictOn'     => false,
    'failover'     => [],
    'port'         => 27017, // MongoDB默认端口,未修改则保持默认
];
  1. 在控制器中调用连接并操作数据:
// 连接MongoDB
$db = \Config\Database::connect('mongo');
// 获取集合(对应MySQL中的表)
$collection = $db->collection('your_collection_name');

// 示例:查询一条数据
$document = $collection->findOne(['name' => 'test']);
print_r($document);

最后别忘了确认MongoDB服务正在运行:如果是系统安装的MongoDB,用sudo systemctl start mongod启动;如果是XAMPP自带的MongoDB,在XAMPP控制面板中启动对应服务即可。

内容的提问来源于stack exchange,提问作者025 Manikandan S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:34:09