Class "MongoDB\Driver\Manager" 随后调用时未找到

Class "MongoDB\\Driver\\Manager" not found when called subsequently

所以我得到了这个小的 webhook 端点,它使用 JSON 数据调用,然后将此数据存储到远程 MongoDB Atlas 数据库中。 除了数据库执行之外,一切都在本地发生。

为了模拟这些请求,我在本地构建了一个 PHP 脚本 sender.php,它通过 curls 向我本地安装的网络服务器发送一个 POST 请求到我的接收文件 listener.php.

当我直接执行 listener.php 时它工作正常,所有数据都通过并写入远程 MongoDB Atlas 数据库。 但是当它从我的 webhook 文件 sender.php 中调用时,我收到以下错误:

PHP Fatal error:  Uncaught Error: Class "MongoDB\Driver\Manager" not found

这是最基本的代码文件,我可以用它重现错误。

composer.json

{
    "require": {
        "mongodb/mongodb": "^1.8"
    }
}

sender.php

$url = "http://localhost/listener.php";

$data = array(
    "id" => "12345",
    "title" => "Test",
    "status" => "updated"
);

$ch = curl_init($url);

$payload = json_encode($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json', 'Accept:application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
curl_close($ch);

listener.php

require 'vendor/autoload.php';

$incomingWebhookData = json_decode(file_get_contents('php://input'));

function submitToDb($database, $collection, $data)
{
    $manager = new MongoDB\Driver\Manager(
        'mongodb+srv://<user_placeholder>:<password_placeholder>@<cluster_placeholder>.mongodb.net/?retryWrites=true&w=majority'
    );

    $bulk = new MongoDB\Driver\BulkWrite;


    $doc = [
        "_id" => new MongoDB\BSON\ObjectID,
        "data_id" => $data->id,
        "title" => $data->title,
        "status" => $data->status,
    ];

    $bulk->insert($doc);

    $manager->executeBulkWrite($database . "." . $collection, $bulk);

}

$database = "webhook_data";
$collection = "internal";
submitToDb($database, $collection, $incomingWebhookData);

我错过了什么全球性的灾难?

感谢您的宝贵时间和帮助

事实证明,我的本地网络服务器 (Apache2) 使用与我的开发环境不同的 PHP-CLI,因此一旦请求被解析到网络服务器,所有启用的扩展和配置都没有效果。

使用 docker 个孩子。