3

尝试连接到 mongo 服务器时出现此错误:

Unable to find the wrapper "mongodb" - did you forget to enable it when you configured PHP?

连接字符串如下所示:

$conn = new Mongo("mongodb://XXXX:XXXX@XXX.member0.mongohq.com:10021/XXX",array("replicaSet" => 'rsname'));

我尝试使用以下方法找出 qhat 包装器可用:

var_dump(stream_get_wrappers());

并得到以下信息:

array
  0 => string 'https' (length=5)
  1 => string 'ftps' (length=4)
  2 => string 'compress.zlib' (length=13)
  3 => string 'compress.bzip2' (length=14)
  4 => string 'php' (length=3)
  5 => string 'file' (length=4)
  6 => string 'glob' (length=4)
  7 => string 'data' (length=4)
  8 => string 'http' (length=4)
  9 => string 'ftp' (length=3)
  10 => string 'phar' (length=4)
  11 => string 'zip' (length=3)
  12 => string 'ssh2.shell' (length=10)
  13 => string 'ssh2.exec' (length=9)
  14 => string 'ssh2.tunnel' (length=11)
  15 => string 'ssh2.scp' (length=8)
  16 => string 'ssh2.sftp' (length=9)

我检查了 conf.d 文件夹,它们似乎都按照我可以看到的顺序排列,所以我不确定我需要做什么才能允许我使用包装器进行连接,如 php 中的示例所示文档示例。

我正在运行 nginx / PHP 5.3.5-1ubuntu7.11

以前有没有人对此有所了解,或者能够提供一些指导?谢谢。

4

1 回答 1

0

您使用的是哪个版本的 Mongo php 库?我使用版本 1.2.12 做了一个这样的简单测试:

<?php

$mongo = new Mongo('mongodb://host1.local:27019,host2.local:27020', array("replicaSet"=>'aaa'));

$hosts = $mongo->getHosts();

var_dump( $hosts );
?>

并且绝对没有问题。自请求PHP-121起可通过 php 驱动程序提供 ReplicaSet 支持,该请求可追溯到版本 1.0.9

为了更具体地回答您的问题,mongo php 驱动程序不使用连接包装器。它有一个连接解析器。您可以在代码本身中找到更详细的信息: parser.c

PS:你的ubuntu版本有点老了!于 2007 年 10 月发布,并于 2009 年 4 月达到 EOL。

于 2012-11-06T11:10:50.700 回答