MongoDB PHP驱动程序无法在Linux AWS上运行

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

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

然而,当加载 phpinfo()</ code>时我不喜欢 看不到任何关于Mongo的提法。 当我尝试运行时:</ p>

$ connection = new MongoClient(); </ code>我得到</ p>

  PHP Fatal 错误:在第3行的/var/www/html/mongo.php中找不到类'MongoClient'
</ code> </ pre>

我确实输入了 extension = mongodb。 所以</ code>进入我的php.ini但导致另一个错误:</ p>

  PHP启动:无法加载动态库'/usr/lib64/php/5.6/modules  /mongodb.so' -  /usr/lib64/php/5.6/modules/mongodb.so:未定义的符号:php_json_serializable_ce在第0行的未知
</ code> </ pre>

这似乎是这个 错误与json相对于MongoDB加载的顺序有关。 但就像我的情况一样,MongoDB根本没有加载我不确定这是否适用于此。</ p>

我很感激为什么这不起作用的帮助。 </ p>
</ div>

展开原文

原文

I'm trying to install the MongoDB PHP driver so I can connect to a MongoDB Server on another machine. Using PHP 5.6 on AWS Linux.

I used sudo pecl install mongodb. Initially there were several errors regarding dependencies but I added them all and it then seems to have installed without any errors.

However, when loading phpinfo() I don't see any reference to Mongo. When I try to run:

$connection = new MongoClient(); I get

PHP Fatal error:  Class 'MongoClient' not found in /var/www/html/mongo.php on line 3

I did put in extension=mongodb.so into my php.ini but that results in another error:

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

It seems this error has to do with the order in which json loads relative to MongoDB. But as in my case it doesn't appear MongoDB is loading at all I'm not sure if that applies here.

I'd appreciate assistance as to why this isn't working.

dsg56465
dsg56465 是。JSON部分就在那里。
接近 4 年之前 回复
dongmu2174
dongmu2174 你看到phpinfo()中的JSON部分吗?
接近 4 年之前 回复
dongyukang7006
dongyukang7006 我有扩展名=mongodb.so作为php.ini中的最后一行。我甚至没有看到extension=json.so
接近 4 年之前 回复
duanhe6464
duanhe6464 确保extension=mongodb.so在extension=json.so之后
接近 4 年之前 回复

3个回答



我遇到了同样的情况,我从mongo开发者那里得到了这个解决方案
你不需要把mongodb.so放在php中。 ini而是使它成为一个单独的模块
如果你正在使用debian </ p>

  cat&lt;&lt;  EOF&gt;  /etc/php5/mods-available/mongodb.ini
; priority = 99
extension = mongodb.so
EOF
php5enmod mongodb
</ code> </ pre>

如果您使用的是fedora </ p>

   echo“extension = mongodb.so”&gt;  /etc/php.d/50-mongodb.ini

nn

然后重启你的apache
它会正常工作。</ p>
</ div>

展开原文

原文

I had faced the same situation and i got this solution from mongo developers You don't need to put mongodb.so in php.ini instead make it a separate module If you are using debian

cat << EOF > /etc/php5/mods-available/mongodb.ini
; priority=99
extension=mongodb.so
EOF
php5enmod mongodb

if you are using fedora

echo "extension=mongodb.so" > /etc/php.d/50-mongodb.ini

Then restart your apache And it will work fine.

du0531
du0531 那就做到了! 谢谢!
接近 4 年之前 回复



对我来说,遵循上面的sage建议后,我仍然无法在phpinfo中看到mongo。 我最后使用pecl卸载并重新安装mongodb并在make的输出结束时注意到,它说:</ p>

 配置选项“php_ini”未设置为php.ini  location 
</ code> </ pre>

跟随此: pecl config-set php_ini /etc/php.ini </ p>

然后:</ p>

  sudo pecl uninstall  mongodb 
sudo pecl install mongodb
systemctl restart php-fpm
systemctl restart httpd
</ code> </ pre>

之后,mongo显示在php -i:</ p>

<前> php -i | grep mongo
/ etc / php.d / 50-mongodb.ini
mongodb
libmongoc bundled version =&gt; 1.9.4
libmongoc SSL =&gt; enabled
libmongoc SSL library =&gt; OpenSSL
libmongoc crypto =&gt; enabled
libmongoc crypto library =&gt; libcrypto
libmongoc crypto system profile =&gt; disabled
libmongoc SASL =&gt; disabled
libmongoc compression =&gt; enabled
libmongoc compression snappy =&gt; disabled
libmongoc compression zlib =&gt; enabled
mongodb.debug =&gt; 没有价值=&gt; 没有值
</ code> </ pre>

和phpinfo:</ p>

  http://1.2.3.4/phpinfo.php/

mongodb
MongoDB支持启用
MongoDB扩展版本1.4.3
MongoDB扩展稳定性稳定
libbson捆绑版本1.9.4
libmongoc捆绑版本1.9.4
libmongoc启用SSL
libmongoc SSL库OpenSSL
libmongoc加密启用
libmongoc加密库libcrypto

libmongoc加密系统配置文件已禁用
libmongoc SASL已禁用
libmongoc已启用压缩
libmongoc已压缩snappy已禁用
libmongoc已压缩zlib已启用
指示本地值主值
mongodb.debug无值无值
</ code> </ pre>
</ DIV>

展开原文

原文

For me, after following the sage advice above, I still couldn't see mongo in phpinfo. I finally resorted to uninstalling and reinstalling mongodb using pecl and noticed at the end of the output from make, it said:

configuration option "php_ini" is not set to php.ini location

Followed this: pecl config-set php_ini /etc/php.ini

Then:

sudo pecl uninstall mongodb
sudo pecl install mongodb
systemctl restart php-fpm
systemctl restart httpd

After that, mongo showed in both php -i:

 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

And phpinfo:

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

dream518518518
dream518518518 这两个命令真的为我修复了systemctl重启php-fpm和systemctl重启httpd
接近 2 年之前 回复



长话短说,不推荐使用MongoClient for PHP。 ( https://github.com/mongodb/mongo-php -driver / issues / 300#issuecomment-210820288 )</ p>

而不是 $ connection = new MongoClient(); </ code>
你想要使用
$ connection = new MongoDB \ Driver \ Manager(); </ code> </ p>

希望这会有所帮助。</ p>
</ div>

展开原文

原文

Long story short, use of MongoClient for PHP is deprecated. ( https://github.com/mongodb/mongo-php-driver/issues/300#issuecomment-210820288 )

Instead of $connection = new MongoClient(); You'll want to use $connection = new MongoDB\Driver\Manager();

Hope this helps.

douba05167
douba05167 如果我们可以重新启动服务器,那么就有机会让它运行起来
大约 2 年之前 回复
dsyk33753
dsyk33753 是的,如果它没有在phpinfo上显示,那么php认为它没有安装......
接近 4 年之前 回复
duandeng7132
duandeng7132 没有不同。 这似乎有一些基本问题。 它几乎就像我没有安装Mongo,即使我做了。
接近 4 年之前 回复
douquan9826
douquan9826 啊,显然是因为你的旧配置文件中有mongo.so行可能会抛出它。 尝试删除它并使用新方法。 GL
接近 4 年之前 回复
duanpan3166
duanpan3166 是的,好几次。 甚至重启服务器。
接近 4 年之前 回复
douzhan8303
douzhan8303 你重启了所有相关服务吗? (阿帕奇等)
接近 4 年之前 回复
dqp10099
dqp10099 尝试并得到PHP致命错误:/var/www/html/mongo.php中找不到类'MongoDB \ Driver \ Manager'
接近 4 年之前 回复
立即提问
相关内容推荐