如何使用 php 选择 documentDB 数据库 Azure


How to select documentDB database azure using php?

我正在尝试使用php与documentDB Azure连接,但我没有让它工作。 现在我正在使用这里给出的代码,但即使这样也不起作用。我可以连接到 documentDB 帐户,但问题是我无法在我的帐户中选择数据库。这是我正在使用的选择数据库函数

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()函数不起作用(未选择帐户中的数据库)这是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);
}

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

关于您的问题,您可以在 request 函数中添加var_dump(curl_error($curl));phpdocumentdb.php您需要解决 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/。