开发者社区 问答 正文

这个阿里云OpenAPI 问题怎么解决?

这个阿里云OpenAPI 问题怎么解决?错误信息;以及代码;fd45f51337f6c316f83ef0c33cfd8e98.png
<?php

//安装依赖包
//composer require alibabacloud/videoenhan-20200320

use AlibabaCloud\SDK\Videoenhan\V20200320\Videoenhan;
use AlibabaCloud\Tea\Utils\Utils;
use \Exception;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Videoenhan\V20200320\Models\GenerateVideoAdvanceRequest\fileList;
use AlibabaCloud\SDK\Videoenhan\V20200320\Models\GenerateVideoAdvanceRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use GuzzleHttp\Psr7\Stream;

class GenerateVideoAdvance {

/**
 * 使用AK&SK初始化账号Client
 * @param string $accessKeyId
 * @param string $accessKeySecret
 * @return Videoenhan Client
 */
public static function createClient($accessKeyId, $accessKeySecret){
    //初始化配置对象Darabonba\OpenApi\Models\Config。
    //Config对象存放accessKeyId、accessKeySecret、endpoint等配置
    $config = new Config([
        "accessKeyId" => $accessKeyId,
        "accessKeySecret" => $accessKeySecret
    ]);
    // 访问的域名
    $config->endpoint = "videoenhan.cn-shanghai.aliyuncs.com";
    return new Videoenhan($config);
}
/**
 * @param string[] $args
 * @return void
 */
public static function main($args){
    // 创建AccessKey ID和AccessKey Secret,请参考https://help.aliyun.com/document_detail/175144.html
    // 如果您是用的子账号AccessKey,还需要为子账号授予权限AliyunVIAPIFullAccess,请参考https://help.aliyun.com/document_detail/145025.html
    // 从环境变量读取配置的AccessKey ID和AccessKey Secret。运行代码示例前必须先配置环境变量。
    //$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
    //$accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
    $client = self::createClient("LTAI5tN******sEctcPVE", "ZPu27tZv*****A2boiBG");
    // 场景一,使用本地文件
    //$file0 = fopen('/tmp/1-video1.mp4', 'rb');
    //$stream0 = new Stream($file0);
    // 场景二,使用任意可访问的url
    $file1 = fopen('https://we*****/test.mp4', 'rb');
    $stream1 = new Stream($file1);
    $fileList0 = new fileList([
        "type" => "video",
        "fileUrlObject" => $stream0,
        "fileName" => "1-video1.mp4"
    ]);
    $fileList1 = new fileList([
        "type" => "video",
        "fileUrlObject" => $stream1,
        "fileName" => "1-video2.mp4"
    ]);
    $generateVideoAdvanceRequest = new GenerateVideoAdvanceRequest([
        "scene" => "costume",
        "width" => 640,
        "height" => 640,
        "style" => "fast",
        "duration" => 10,
        "transitionStyle" => "brush",
        "fileList" => [
            $fileList0,
            $fileList1
        ]
    ]);
    $runtime = new RuntimeOptions([]);
    try {
        $resp = $client->generateVideoAdvance($generateVideoAdvanceRequest, $runtime);
        # 获取整体结果
        echo Utils::toJSONString($resp->body);
    } catch (Exception $exception) {
        # 获取整体报错信息
        echo Utils::toJSONString($exception);
        # 获取单个字段
        echo $exception->getCode();
    }
}

}
$path = DIR . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
require_once $path;
}
//$argv是预留的数组入参参数,无实际意义,无需进行修改
GenerateVideoAdvance::main(array_slice($argv, 1));

展开
收起
三分钟热度的鱼 2023-07-26 13:45:11 173 分享 版权
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    可以看出是在使用 PHP SDK 调用阿里云 OpenAPI 时出现了问题,具体是在调用 fopen() 函数时出现了错误。可能的原因是因为 fopen() 函数在打开 HTTPS URL 时需要启用 OpenSSL 扩展,而你的 PHP 环境没有启用或者配置正确的 OpenSSL 扩展导致该错误发生。
    可以尝试以下几个方面:

    检查 PHP 环境是否安装了正确的 OpenSSL 扩展:请检查你的 PHP 环境是否已经安装了正确的 OpenSSL 扩展,并且已经启用了该扩展。可以通过 phpinfo() 函数查看 PHP 环境的配置信息,确认 OpenSSL 扩展是否已经正确安装和启用。

    检查 SSL/TLS 证书是否正确:请检查你的 SSL/TLS 证书是否正确,包括证书链、证书格式、证书路径等。如果证书有误,可能会导致 fopen() 函数无法打开 HTTPS URL。可以尝试使用 cURL 等其他工具测试您的证书是否正确。

    检查网络环境是否正常:请检查你的网络环境是否正常,包括网络连接、DNS 解析等。

    2023-07-26 21:04:43
    赞同 展开评论
  • 遇到 SSL operation failed 错误通常是由于与 SSL(Secure Sockets Layer)连接相关的问题引起的。这个错误可能会出现在使用阿里云OpenAPI时,主要有以下几种可能的原因和解决方法:

    1. 证书问题:验证服务器证书时可能会出错。你可以尝试更新本地的CA证书库,或者确保你的系统时间与TLS证书的有效期相符。

    2. 安全协议问题:某些旧版本的SSL/TLS协议可能不再受支持。请确保你的客户端和服务端都使用了支持的安全协议版本,例如TLS 1.2 或更高版本。

    3. 网络问题:如果你的网络连接存在问题,如防火墙阻塞、代理配置错误等,也可能导致 SSL 连接失败。请确认你的网络连接正常,并检查相关网络设备和配置。

    4. 证书链不完整:如果服务器证书的颁发机构(CA)证书链不完整,可能会导致 SSL 连接失败。确保服务器证书链完整且正确配置。

    5. 客户端配置问题:在使用阿里云OpenAPI时,确保你的客户端代码中正确配置了请求的 SSL 连接参数,包括合适的协议版本、证书验证等。

    2023-07-26 20:22:55
    赞同 展开评论
  • e7d0d17d77c4f79091dc6e56fa072448.png
    这句话是说 new Stream读的需要是资源lQLPJxJhku5YBkrNBRLNCz6wIILwbRdsHlMEq1Z1CADVAA_2878_1298.pnghttps://help.aliyun.com/document_detail/311675.html?spm=a2c4g.311672.0.0.1af06189qJrd12
    上面有警告 客户要读的是https链接 但环境没有SSL证书。635e835b9e64c94e1b25ee7166b16939.png
    解决办法1: 用http
    解决办法2:补齐代码运行环境HTTPS请求能力。此回答整理自钉群“OpenAPI 开发者门户 - 值班服务群2群”

    2023-07-26 13:56:06
    赞同 展开评论