Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用laravel连接到Amazon密钥空间(Cassandra)?_Php_Laravel_Cassandra - Fatal编程技术网

Php 如何使用laravel连接到Amazon密钥空间(Cassandra)?

Php 如何使用laravel连接到Amazon密钥空间(Cassandra)?,php,laravel,cassandra,Php,Laravel,Cassandra,我正在尝试连接到amazon密钥空间中托管的Cassandra,每个连接上都需要包含SSL证书 我已经安装了驱动程序,连接成功,但是身份验证失败,因为我缺少证书 我尝试了以下包装,但没有一个包含配置SSL证书的参数: sonvq/laravel cassandra 福伊塔德/拉韦尔卡桑德拉 库贝特奇/拉卡萨 在我的config/database.php文件中,我配置了以下内容,我猜证书在“options”参数中,但它不起作用: 'cassandra' => [ 'dr

我正在尝试连接到amazon密钥空间中托管的Cassandra,每个连接上都需要包含SSL证书

我已经安装了驱动程序,连接成功,但是身份验证失败,因为我缺少证书

我尝试了以下包装,但没有一个包含配置SSL证书的参数:

sonvq/laravel cassandra 福伊塔德/拉韦尔卡桑德拉 库贝特奇/拉卡萨

在我的config/database.php文件中,我配置了以下内容,我猜证书在“options”参数中,但它不起作用:

   'cassandra' => [
        'driver' => 'cassandra',
        'host' => env('CASSANDRA_DB_HOST', ''),
        'port' => env('CASSANDRA_DB_PORT', 9142),
        'keyspace' => env('CASSANDRA_DB_DATABASE', ''),
        'username' => env('CASSANDRA_DB_USERNAME', ''),
        'password' => env('CASSANDRA_DB_PASSWORD', ''),
        'options'   => array(
        Cassandra::VERIFY_PEER_CERT    => '/home/user/AmazonRootCA1.pem',
       ),
     ]
通过命令行使用“cqlsh”可以很好地工作,因为在该命令中可以很容易地配置证书路径,但在laravel上,我无法找到如何设置该路径


任何帮助都会很好!谢谢

过去两天,我一直在尝试将我的laravel应用程序连接到amazon密钥空间,这让我头疼不已

最后,我对Cubetech/lacassa进行了一些更改,使其工作正常

在阅读了datastax的文档之后,我找到了加载amazon PEM证书的方法,最后我可以连接了

如果对connection.php进行以下更改,那就太好了

protected function createConnection(array $config)
    {
       $ssl = Cassandra::ssl()
               ->withVerifyFlags(Cassandra::VERIFY_PEER_CERT)
               ->withTrustedCerts($config['cert_path'])
               ->build();     
        
        $cluster   = Cassandra::cluster()
        ->withContactPoints($config['host'])
        ->withPort((int) $config['port'])
        ->withCredentials($config['username'],$config['password'])
        ->withSSL($ssl)
        ->withDefaultConsistency(Cassandra::CONSISTENCY_LOCAL_QUORUM)
        ->build();

        $keyspace  = $config['keyspace'];
        $connection   = $cluster->connect($keyspace);
        return $connection;

    }
还需要设置证书路径变量

出于某种原因,我发现即使配置了环境变量,也总是与localhost建立连接,这就是我使用$config数组加载环境变量的原因

查询返回Cassandra/Rows对象,我必须将它们转换为字符串或在循环中读取它们,但这不是问题