2016-04-27 21 views
0

私はphpを使用してdocumentDB Azureに接続しようとしていますが、動作させることはできませんでした。今私はcode given hereを使用していますが、それでも動作していません。私はdocumentDBアカウントに接続できますが、問題は自分のアカウントでデータベースを選択できないことです。phpを使用してdocumentDB database azureを選択するには?

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); 
} 
:これは私がそれをデバッグしlistDatabases()関数は(アカウント内のデータベースを選択していない)機能していないことを見つけることを試みた私は

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; 
    } 
} 

を使用していますselectDB機能ここでlistDatabase()関数であるです

誰かがこの問題を私に助けてくれますか?

+0

listDatabasesリクエストは200を返しますか? JSONの外観はどうですか?これは次のようになります。https://msdn.microsoft.com/en-us/library/azure/mt489065.aspx –

+0

ローカルマシンでこのコードを実行しているときにデータベースに接続していますが、これをプッシュしているときazure上でローカルのgitリポジトリにコードすると動作しません。なぜなのかご存知ですか? – Rohit

答えて

0

問題については、phpdocumentdb.phprequest機能にvar_dump(curl_error($curl));を追加して、カールの問題のトラブルシューティングを行う必要があります。

ローカルまたは一部の開発環境で開発している場合、SSL証明書の問題が発生する可能性があります。カールエラーがメッセージを出力することがあります:SSL証明書の問題:ローカル発行者証明書を取得できません

開発のために、のの機能をphpdocumentdb.phpに簡単に追加すると、SSL検証をバイパスできます。

prod envにいる場合は、PHPランタイムにSSL証明書を作成する必要があります。詳細はhttps://blogs.msdn.microsoft.com/azureossds/2015/06/12/verify-peer-certificate-from-php-curl-for-azure-apps/を参照してください。

+0

ローカルマシン上でこのコードを実行しているときにデータベースに接続していますが、このコードをazure上のローカルgitリポジトリにプッシュしようとすると機能しません。なぜなのかご存知ですか? – Rohit

+0

デフォルトでAzure PHPランタイムにはSSL証明書がありませんので、作成して設定する必要があります。https://blogs.msdn.microsoft.com/azureossds/2015/06/12/verify-peer-certificate-fromを参照してください。 -php-curl-for-azure-apps /。 –

+0

それ以外の場合は、文を簡単に追加できます。curl_setopt($ curl、CURLOPT_SSL_VERIFYPEER、false); phpdocumentdb.phpのリクエスト機能でSSL検証をバイパスします。私が私の答えで述べたように。 –

関連する問題