首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB PHP驱动程序在Linux AWS上不起作用

问MongoDB PHP驱动程序在Linux AWS上不起作用
EN

Stack Overflow用户
提问于 2017-01-06 13:43:46
回答 3查看 1.6K关注 0票数 0

我正在尝试安装MongoDB PHP驱动程序,以便可以连接到另一台计算机上的MongoDB服务器。在AWS Linux上使用PHP 5.6。

我使用了sudo pecl install mongodb。最初,有几个关于依赖项的错误,但我添加了所有错误,然后它似乎已经安装没有任何错误。

然而,当加载phpinfo()时,我看不到任何对Mongo的引用。当我尝试运行时:

我得到了$connection = new MongoClient();

代码语言:javascript
复制
PHP Fatal error:  Class 'MongoClient' not found in /var/www/html/mongo.php on line 3

我确实在我的php.ini中放入了extension=mongodb.so,但这导致了另一个错误:

代码语言:javascript
复制
PHP Startup: Unable to load dynamic library '/usr/lib64/php/5.6/modules/mongodb.so' - /usr/lib64/php/5.6/modules/mongodb.so: undefined symbol: php_json_serializable_ce in Unknown on line 0

这个错误似乎与json相对于MongoDB的加载顺序有关。但在我的例子中,MongoDB似乎根本没有加载,我不确定这是否适用于这里。

我希望能帮助你解释为什么这个方法不起作用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-06 14:04:41

我曾经遇到过同样的情况,我从mongo开发人员那里得到了这个解决方案,如果你使用的是debian,你不需要把mongodb.so放在php.ini中,而是把它变成一个单独的模块

代码语言:javascript
复制
cat << EOF > /etc/php5/mods-available/mongodb.ini
; priority=99
extension=mongodb.so
EOF
php5enmod mongodb

如果您使用的是fedora

代码语言:javascript
复制
echo "extension=mongodb.so" > /etc/php.d/50-mongodb.ini

然后重新启动您的apache,它将正常工作。

票数 0
EN

Stack Overflow用户

发布于 2018-05-11 00:00:59

对我来说,在遵循了上面的建议之后,我仍然无法在phpinfo中看到mongo。我最终使用pecl卸载并重新安装了mongodb,并注意到make的输出末尾显示:

代码语言:javascript
复制
configuration option "php_ini" is not set to php.ini location

接下来是:pecl config-set php_ini /etc/php.ini

然后:

代码语言:javascript
复制
sudo pecl uninstall mongodb
sudo pecl install mongodb
systemctl restart php-fpm
systemctl restart httpd

在那之后,mongo在两个php -i中都显示了:

代码语言:javascript
复制
 php -i|grep mongo
/etc/php.d/50-mongodb.ini
mongodb
libmongoc bundled version => 1.9.4
libmongoc SSL => enabled
libmongoc SSL library => OpenSSL
libmongoc crypto => enabled
libmongoc crypto library => libcrypto
libmongoc crypto system profile => disabled
libmongoc SASL => disabled
libmongoc compression => enabled
libmongoc compression snappy => disabled
libmongoc compression zlib => enabled
mongodb.debug => no value => no value

和phpinfo:

代码语言:javascript
复制
http://1.2.3.4/phpinfo.php/

mongodb
MongoDB support enabled
MongoDB extension version   1.4.3
MongoDB extension stability stable
libbson bundled version 1.9.4
libmongoc bundled version   1.9.4
libmongoc SSL   enabled
libmongoc SSL library   OpenSSL
libmongoc crypto    enabled
libmongoc crypto library    libcrypto
libmongoc crypto system profile disabled
libmongoc SASL  disabled
libmongoc compression   enabled
libmongoc compression snappy    disabled
libmongoc compression zlib  enabled
Directive   Local Value Master Value
mongodb.debug   no value    no value
票数 1
EN

Stack Overflow用户

发布于 2017-01-06 13:52:04

长话短说,在PHP中使用MongoClient是不推荐的。( https://github.com/mongodb/mongo-php-driver/issues/300#issuecomment-210820288 )

您将希望使用$connection = new MongoDB\Driver\Manager();而不是$connection = new MongoClient();

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41499647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档