【发布时间】:2020-01-31 01:52:53
【问题描述】:
我正在尝试使用 mongodb PHP 模块。我已使用 pecl 安装它并将其写入我的 php.ini。呼叫和回显get_loaded_extensions() 正确显示扩展名mongodb。但是,official guide 后面的代码会引发错误class MongoDB\Client not found。我该如何解决?我需要先以某种方式包含模块吗?
我的代码:
<?php
var_dump(get_loaded_extensions());
$client = new MongoDB\Client(
'mongodb+srv://<username>:<password>@<cluster-address>/test?retryWrites=true&w=majority'
);
如果这很重要,我将在我的树莓派上托管一个安装了 rasbian lite 的 nginx 服务器。
【问题讨论】:
-
很可能您只在
CLI SAPI加载的配置文件中加载了此文件,而不是您的 Web SAPI。如果您确实在两者中都加载了它们,您必须记住重新启动您的 Web SAPI 的 php 工作程序以加载扩展。检查正确的SAPI中的phpinfo()以确保。 -
@Sherif 老实说,我不太了解 SAPIS,但在同一网络中的另一台机器上,我可以访问该站点。
phpinfo()显示正确的 ini 文件,并有一个 mongodb 模块的部分。 -
您是从命令行执行此操作的,对吗?因此,创建一个包含
<?php phpinfo();的文件。从您的 Web 浏览器打开它,然后查找 Loaded configuration (php.in) 文件。那就是您要粘贴extension=mongodb.so的文件。然后重新启动fpm 或apache httpd。 -
@Sherif 在命令行中,我说
sudo systemctl start nginx来启动我的nginx 服务器。现在从另一台机器上,我可以访问服务器上的 php 文件,并在 phpinfo 中查看所有内容都已正确加载。对不起,如果这是一个愚蠢的问题,但是除了命令行我应该在哪里做这个? -
如果在 phpinfo() 中一切正常,那么你从哪里得到类不存在的错误?您是从 Web 还是在命令行上运行该脚本?