首页 > 解决方案 > 我无法在云端获取签名的 url,出现致命错误,我正在尝试的代码如下

问题描述

<?php

require '../aws-autoloader.php';

use Aws\CloudFront\CloudFrontClient;
use Aws\Exception\AwsException;

// Create a CloudFront Client
$client = new Aws\CloudFront\CloudFrontClient([
    'profile' => 'default',
    'version' => 'latest',
    'region' => 'us-east-1',
]);

// Set up parameter values for the resource
$resourceKey = 'https://example.cloudfront.net/b20cbfe5-a8df-47a5-94c4-aeadea20759f/dash/videoplayback.mpd';
$expires = time() + 300;

// Create a signed URL for the resource using the canned policy
$signedUrlCannedPolicy = $client->getSignedUrl([
    'url' => $resourceKey,
    'expires' => $expires,
    'private_key' => 'pk.pem',
    'key_pair_id' => 'keyid'
]);

得到错误为

致命错误:未捕获的 InvalidArgumentException:错误:0906D06C:PEM 例程:PEM_read_bio:C:\xampp\htdocs\aws\Aws\CloudFront\Signer.php 中没有起始行:40 堆栈跟踪:#0 C:\xampp\htdocs\aws \Aws\CloudFront\UrlSigner.php(24): Aws\CloudFront\Signer->__construct('APKAJYH2L6BGHLW...', 'pk-APKAJYH2L6BG...') #1 C:\xampp\htdocs\aws\Aws\ CloudFront\CloudFrontClient.php(138): Aws\CloudFront\UrlSigner->__construct('APKAJYH2L6BGHLW...', 'pk-APKAJYH2L6BG...') #2 C:\xampp\htdocs\aws\app\stream.php (26): Aws\CloudFront\CloudFrontClient->getSignedUrl(Array) #3 {main} 在第 40 行的 C:\xampp\htdocs\aws\Aws\CloudFront\Signer.php 中抛出

标签: phpamazon-s3aws-sdkamazon-cloudfront

解决方案


我已经解决了这个问题。问题是你需要像这样在下面给出绝对路径

'private_key' => $_SERVER['DOCUMENT_ROOT'] . '/' . 'pk.pem',

让我知道它是否有效?


推荐阅读