如何使用 php select documentDB 数据库 azure?

How to select documentDB database azure using php?

我正在尝试使用 php 连接 documentDB Azure,但我没有成功。现在我正在使用 code given here 但即使那样也不起作用。我可以连接到 documentDB 帐户,但问题是我无法 select 我帐户中的数据库。这是我正在使用的 selectDB 函数

public function selectDB($db_name)
{
    $rid_db = false;
    $object = json_decode($this->listDatabases());
    $db_list = $object->Databases;
    foreach ($db_list as $value) 
    {
        if ($value->id === $db_name) 
        {
            $rid_db = $value->_rid;
        }
    }
    if (!$rid_db) 
    {
        $object = json_decode($this->createDatabase('{"id":"' . $db_name . '"}'));
        $rid_db = $object->_rid;
    }
    if ($rid_db) 
    {
        return new DocumentDBDatabase($this, $rid_db);
    } 
    else 
    {
        return false;
    }
}

我尝试调试它,发现 listDatabases() 函数不工作(不是 select 帐户中的数据库)这里是 listDatabase() 函数:

public function listDatabases()
{
    $headers = $this->getAuthHeaders('GET', 'dbs', '');
    $headers[] = 'Content-Length:0';
    $options = array(
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_HTTPGET => true,
    );
    return $this->request("/dbs", $options);
}

有人可以帮我解决这个问题吗?

关于您的问题,您可以在 phpdocumentdb.php 中的 request 函数中添加 var_dump(curl_error($curl)); 以解决卷曲问题。

如果您在本地或某些开发环境中进行开发,则可能会出现 SSL 证书问题。 curl 错误可能会输出消息:SSL 证书问题:无法获取本地颁发者证书

而对于开发,您可以在phpdocumentdb.phprequest函数中简单地添加一句curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);来绕过SSL验证。

如果您在生产环境中,您应该在 PHP 运行时创建 SSL 证书。有关更多信息,请参阅 https://blogs.msdn.microsoft.com/azureossds/2015/06/12/verify-peer-certificate-from-php-curl-for-azure-apps/