我正在尝试使用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.php
的request
功能中添加句子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/。