php - MongoDB和PHP连接
问题描述
我正在尝试在Ubuntu 16.04上将 MongoDB 与php5.6一起使用。我有一个创建集合的 php 脚本。当我在我的 Apache Web 服务器上打开脚本时,它显示“连接成功,已创建集合”但是当我登录 mongo 终端并切换到数据库(ecoss)时,我找不到该集合。
sudo apt-get update
建立连接:我通过运行安装了mongoDB 扩展sudo apt-get install php5.6-mongo
之后我编辑了我的php.ini文件并添加了扩展名extension=mongo.so;
php-mongo的安装:
我的 php.ini 文件的提取:
这是我的 php 脚本create.php
<?php
// connect to mongodb
$m = new MongoClient();
$db = $m->ecoss;
echo "Connection successful, Database ecoss selected" . "<br>";
$collection = $db->createCollection("mycol");
echo "Collection created succsessfully";
?>
执行上述脚本后,在我的浏览器上输出:
连接到ecoss数据库并运行命令后在 mongo 终端上输出show collections
:
解决方案
我的问题已经解决了!
通过 php 创建新集合时,将创建该集合。感谢@eselskas,我看到在倾倒时$collection
,它返回了 ecoss.mycol。问题是连接到数据库ecoss并运行命令后,集合不会出现在 mongo shell 上show collections
。这是由于php访问mongo的身份验证问题。
以下是帮助我解决此问题的步骤:
- 连接到管理员数据库
use admin
- 删除管理员数据库
db.dropDatabase()
--auth
在文件mongod.service 中删除sudo nano /lib/systemd/system/mongod.service
。ExecStart行应显示为ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
(删除后--auth
)- 运行命令
sudo systemctl daemon-reload
并sudo systemctl restart mongod
重新加载服务。
完成上述步骤后,我运行我的create.php
脚本,然后登录 mongo 和我的数据库ecoss ,然后show collections
我可以清楚地看到我的集合mycol。
推荐阅读
- python - Pygame精灵重叠问题
- google-apps-script - 更新单元格并返回工作表的 PDF 文件
- angular - 如何以角度控制可观察到字符串的日志数据
- javascript - 如何使用 javascript 调用图像和 .mp3
- javascript - 如果对象数组中两个不同对象的两个键在 JavaScript 中相同,则通过键查找对象
- .net - 表单输入事件不会触发
- arrays - 为什么我不能将字符串推送到数组?
- pascal - 使用while do循环重写Pascal for do循环
- c# - 使用 LIbVLCSharp 按顺序播放多个视频会导致内存增加很多
- amazon-web-services - 由于未授权,拒绝从 lambda 连接到 cognito