为 php7 设置 mongoDB 扩展

Dan*_*naq 8 php ubuntu mongodb

我正在尝试为 php7 安装 mongoDB 扩展。我从全新安装的 Ubuntu-Server 16.04.1 开始。预安装(在安装操作系统时)软件包是 LAMP-extension、OpenSSL 和 MySQL-server。这是安装在本地 VirtualBox 上的。它应该是一个开发系统,为每个开发人员配置平等。

首先,我根据这些说明安装了 MongoDB 本身:在 Ubuntu 上安装 mongoDB

之后,根据第二条指令:安装 php7-mongoDB-client-driver

我安装了

  • php-梨
  • phpize

它可以在

$sudo apt-get install php-pear phpize
Run Code Online (Sandbox Code Playgroud)

因为这两个包在使用时被标记为丢失

sudo pecl install mongodb
Run Code Online (Sandbox Code Playgroud)

第一次。

然后我被建议安装openssl-extension。关于这一点,我找到了一条指令,告诉我执行这 3 个命令:

  • $sudo apt-get install libssl-dev
  • $sudo apt-get install libcurl4-openssl-dev
  • $sudo apt-get install libcurl4-openssl-dev pkg-config libssl-dev libsslcommon2-dev

(第一个包已经安装在我的系统上)

在那之后

$php -m
Run Code Online (Sandbox Code Playgroud)

应该将“openssl”显示为列表中的一个点。

然后我终于可以执行了

$sudo pecl install mongodb
Run Code Online (Sandbox Code Playgroud)

这个安装最后显示了四个指令:

<Installing '/usr/lib/php/20151012/mongodb.so'>
<install ok: channel://pecl.php.net/mongodb-1.1.8>
<configuration option "php_ini" is not set to php.ini location>
<You should add "extension=mongodb.so" to php.ini>
Run Code Online (Sandbox Code Playgroud)

所以我执行了:

$php -i | grep extension_dir
Run Code Online (Sandbox Code Playgroud)

它应该显示与第一行中显示的路径相同的路径。

$pear config-set php_ini /etc/php5/apache2/php.ini
$pecl config-set php_ini /etc/php5/apache2/php.ini
Run Code Online (Sandbox Code Playgroud)

按照第三行的说明进行操作。

添加extension=mongodb.so到 phpini at/etc/php/7.0/apache2/ 以符合第 4 行。

最后,在重新启动 apache2 后,

$php -i
Run Code Online (Sandbox Code Playgroud)

应该在第二行显示相同版本的 mongodb。

完成所有这些步骤后,我找到了最后一个要安装的软件包

$sudo apt-get install php-mongodb
Run Code Online (Sandbox Code Playgroud)

但这也无济于事。

要检查扩展是否正常工作,我使用了:

$m = new MongoClient();  OR

$m = new Mongo\Driver\Manager();
Run Code Online (Sandbox Code Playgroud)

然后回显 $m。我读到这Mongo\Driver\Manager是新版本,但即使使用此代码它也不起作用。它总是告诉我“找不到”课程。不管我试过什么课。

我希望这个(希望)完整的说明可以帮助有关于 mongodb 和 php 的类似问题的人。

此外,我希望这些信息可以帮助你给我一个提示,我还能做些什么来解决这个问题。不幸的是,我搜索了很长时间,但没有找到将这个扩展包含在这个 php 版本中的东西。那里只有一部分,但我无法将它们构建在一起。

Str*_*0bg 4

使用 PHP 7+ 时安装新的 Mongo PHP 适配器

 composer config "platform.ext-mongo" "1.6.16" && composer require alcaeus/mongo-php-adapter
Run Code Online (Sandbox Code Playgroud)

然后使用PECL安装mongodb

pecl install mongodb
Run Code Online (Sandbox Code Playgroud)

如果你正确安装了 mongodb

$ sudo nano /etc/php/7.0/apache2/php.ini
Run Code Online (Sandbox Code Playgroud)

在文件中添加以下行:

extension = mongodb.so;
Run Code Online (Sandbox Code Playgroud)

或使用此命令

echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
Run Code Online (Sandbox Code Playgroud)