我试图找出为什么PHP驱动程序无法连接到mongoDB
操作系统:CentOS版本5.2(最终版)
添加了链接:mongo -> mongodb-linux-i686-2.4.3
创建data
文件夹:mkdir /home/max/mongo/data
发起了mongo:
mongo / bin / mongod --dbpath = mongo / data --fork --logpath /var/wefi/logs/feederliteRC/mongodb.log
一切正常,可以与mongoVUE监视工具连接。 (来自Windows7)
现在,我尝试从PHP连接到BongoDB:
我为PHP安装了驱动程序:
sudo pecl install mongo
on:php -i | grep mongo
我得到了:
mongo
mongo.allow_empty_keys => 0 => 0
mongo.chunk_size => 262144 => 262144
mongo.cmd => $ => $
mongo.default_host => localhost => localhost
mongo.default_port => 27017 => 27017
mongo.is_master_interval => 15 => 15
mongo.long_as_object => 0 => 0
mongo.native_long => 0 => 0
mongo.ping_interval => 5 => 5
OLDPWD => /usr/share/pear/doc/mongo
_SERVER["OLDPWD"] => /usr/share/pear/doc/mongo
我添加到php.ini
(nano /etc/php.ini
):extension=mongo.so
并重新启动httpd
:/etc/init.d/httpd restart
来自代码:
try {
// open connection to MongoDB server
$conn = new Mongo('localhost');
} catch (MongoConnectionException $e) {
die('Error connecting to MongoDB server');
} catch (MongoException $e) {
die('Error: ' . $e->getMessage());
}
PHP看到new Mongo
,但我得到例外:"Error connecting to MongoDB server
。
奇怪,mongoDB运行,PHP的驱动程序工作,但它没有看到mongoDB。
有人可以帮助我,
[编辑]
“连接到MongoDB服务器时出错连接失败:localhost:27017:拒绝连接”
我是否需要向php.ini
添加smoething?
答案 0 :(得分:3)
我认为你的联系应该是这样的:
$conn = new Mongo("mongodb://localhost");
此外,您可以更好地使用MongoClient,因为Mongo从版本1.3.0开始已弃用。
$m = new MongoClient("mongodb://localhost", array("username" => $username, "password" => $password));
有关更多信息,请参阅php手册: http://nl.php.net/manual/en/mongo.connecting.auth.php
修改强> 如果localhost无法使用IP地址(感谢Maxim Shoustin)
对于Mongo,它将是:
$conn = new Mongo("mongodb://127.0.0.1");
或者如果您使用MongoClient,它将是:
$m = new MongoClient("mongodb://127.0.0.1", array("username" => $username, "password" => $password));
答案 1 :(得分:0)
我找到了一步一步的指南,但在我看来,你做得对。也许this可以帮到你。在这种情况下,他根本不使用连接参数,虽然我很确定它应该是一个IP或连接字符串linke:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
答案 2 :(得分:0)
对于像我这样在2016年开始使用MongoDB时非常困惑的未来人。前面提到的连接方法现已弃用。
要使用3.2等版本连接到MongoDB,您需要:
$mongo = new Mongo\Driver\Manager('mongodb://localhost'); // if you have MongoDB PHP drivers and no Library
//Alternatively (recommended)
$mongo = new Mongo\Client; // for default local connection - MongoDB library required
答案 3 :(得分:0)
如果您正在运行SELinux,并且命令行连接有效,但PHP连接失败,请尝试以下命令。
/ usr / sbin / setsebool -P httpd_can_network_connect 1
然后重新启动Apache。