如何使用php选择documentDB数据库azure?

时间:2016-04-27 19:51:10

标签: php azure azure-cosmosdb

我正在尝试使用php连接documentDB Azure,但我没有让它工作。现在我正在使用code given here,但即使这样也行不通。我可以连接到documentDB帐户,但问题是我无法在我的帐户中选择数据库。这是我正在使用的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()函数不起作用(不选择帐户中的数据库)这是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);
}

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

1 个答案:

答案 0 :(得分:0)

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

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

对于开发,您可以在curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);的{​​{1}}函数中添加句子request,以绕过SSL验证。

如果您在prod env中,则应在PHP运行时中创建SSL证书。有关详细信息,请参阅https://blogs.msdn.microsoft.com/azureossds/2015/06/12/verify-peer-certificate-from-php-curl-for-azure-apps/