难以让Mongodb与PHP合作

时间:2019-05-25 06:57:06

标签: php mongodb

我已经在新安装的Ubuntu 18.04服务器上安装了mongodb,虽然我可以在命令行上使用mongo,但似乎无法使用PHP连接到它。

我一直按照https://www.youtube.com/watch?v=RQcQ5tvb5E8&t=620s进行操作:

apt安装mongodb-server
apt install php-pear#获取PECL
apt install php7.2-dev#获取phpize
pecl安装mongodb

phpinfo()显示 extension_dir = / usr / lib / php / 20170718 ,而mongodb.so实际上位于该目录中,并且具有与所有其他文件相同的所有权和权限。 php -i | grep extension_dir 显示 extension_dir => / usr / lib / php / 20170718 => / usr / lib / php / 20170718

然后我将 extension = mongodb.so 添加到了 /etc/php/7.2/apache2/php.ini 中,与列出的其他扩展名相同。在 /etc/php/7.2/cli / 下也有一个php.ini文件,因此我在其中添加了这一行。然后,我重新启动了apache2服务。

我在/var/www/html/mongo.php下创建了一个测试文件

<?php

$m = new Mongo();
var_dump($m);exit;

当我浏览到该页面时,出现“此页面无法正常工作; Chrome中出现HTTP ERROR 500'消息。我也尝试过 Mongodb(); MongoClient(); MongodbClient(); mongo(); mongodb(); mongodbclient(); ,但无济于事。

2 个答案:

答案 0 :(得分:0)

请确保您还安装了mongodb php驱动程序。请先确认php版本。

在Ubuntu上,您可以执行以下操作:

sudo apt-get install php-mongodb

或对于特定的PHP版本相同:

sudo apt-get install php5.6-mongo

sudo apt-get install php7.0-mongodb

然后重新启动服务。

sudo systemctl reload nginx

答案 1 :(得分:0)

您应该尝试其中的一些

https://docs.mongodb.com/ecosystem/drivers/php/

https://www.php.net/manual/en/mongodb.tutorial.library.php

它们应该可以与php7 +作曲家一起正常工作

实际上,使用作曲家非常简单(像这样):

`$ composer require mongodb/mongodb
 ./composer.json has been created
 Loading composer repositories with package information
 Updating dependencies (including require-dev)
   - Installing mongodb/mongodb (1.0.0)
     Downloading: 100%         

 Writing lock file
 Generating autoload files

创建文件:test.php(在运行作曲家的位置)

<?php
 require 'vendor/autoload.php'; // include Composer's autoloader
 $client = new MongoDB\Client("mongodb://localhost:27017");
 $collection = $client->demo->beers;
 $result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );
 echo "Inserted with Object ID '{$result->getInsertedId()}'";
 ?>

那应该足够了