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加载这个扩展:
- 编辑XAMPP的PHP配置文件:
sudo nano /opt/lampp/etc/php.ini
- 在文件末尾添加一行配置:
extension=mongodb.so
- 重启XAMPP的Apache服务:
sudo /opt/lampp/lampp restart apache
- 验证扩展是否生效:在XAMPP的
htdocs目录新建phpinfo.php文件,内容为:
<?php phpinfo(); ?>
访问http://localhost/phpinfo.php,搜索mongodb,如果能看到对应的模块信息,说明扩展安装成功。
4. 在CodeIgniter4中配置MongoDB连接
接下来完成CI4与MongoDB的对接:
- 进入你的CI4项目根目录,通过Composer安装MongoDB官方PHP库:
cd /path/to/your/ci4-project composer require mongodb/mongodb
- 打开
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默认端口,未修改则保持默认 ];
- 在控制器中调用连接并操作数据:
// 连接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
相关产品推荐
相关产品推荐

