php - 我无法在云端获取签名的 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 中抛出
解决方案
我已经解决了这个问题。问题是你需要像这样在下面给出绝对路径
'private_key' => $_SERVER['DOCUMENT_ROOT'] . '/' . 'pk.pem',
让我知道它是否有效?
推荐阅读
- r - 如何将 Rmarkdown 文件编入嵌入绘图的 html 文件?
- flutter - 如何创建一个对话框,就像您在移动设备键盘中按住表情符号时出现的那样?
- azure - 无法获取昨天或在使用 powershell 之前创建的存储帐户中的 blob
- loops - 如何在使用循环时保持游戏得分并在退出后获得最终游戏得分
- html - 绝对定位动画子 div 超出其父边界,如何解决?
- python - 如何抓取网页矢量中的所有链接?
- algorithm - 为什么在 Dijkstra 算法中使用 PriorityQueue?
- odoo - 如何将计算出的 id 与 Odoo 工作室中的多对一字段联系起来?
- sql - 合并两个查询添加列
- react-redux - 带调度的节流阀