阿里云 openapiopenapi-php SDK使用问题

date_default_timezone_set("GMT");
//绑定 ip 到域名
Ali::Obj()-&UpdateDomainRecord();
private $accessKeyId
= "OJR9w5xfGaz1jVDg";
private $accessSecrec = "xOKRdKk0EI7F0hdtnEnIAVLVxAe4LI";
private static $obj
public static function Obj ()
if(is_null(self::$obj))
self::$obj = new self();
return self::$
public function DescribeDomainRecords()
$requestParams = array(
"DescribeDomainRecords",
"DomainName"
$this-&requestAli($requestParams);
$this-&outPut($val);
public function UpdateDomainRecord()
$ip = $this-&ip();
$requestParams = array(
"UpdateDomainRecord",
"RecordId"
$this-&requestAli($requestParams);
$this-&outPut($val."
private function requestAli($requestParams)
$publicParams = array(
"AccessKeyId"
$this-&accessKeyId,
"Timestamp"
date("Y-m-d\TH:i:s\Z"),
"SignatureMethod"
"HMAC-SHA1",
"SignatureVersion"
"SignatureNonce"
substr(md5(rand(1,)),rand(1,9),14),
$params = array_merge($publicParams, $requestParams);
$params['Signature'] =
$this-&sign($params, $this-&accessSecrec);
$uri = http_build_query($params);
$url = '/?'.$
return $this-&curl($url);
private function ip()
$ip = $this-&curl("http://httpbin.org/ip");
$ip = json_decode($ip,true);
return $ip['origin'];
private function sign($params, $accessSecrec, $method="GET")
ksort($params);
$stringToSign = strtoupper($method).'&'.$this-&percentEncode('/').'&';
$tmp = "";
foreach($params as $key=&$val){
$tmp .= '&'.$this-&percentEncode($key).'='.$this-&percentEncode($val);
$tmp = trim($tmp, '&');
$stringToSign = $stringToSign.$this-&percentEncode($tmp);
= $accessSecrec.'&';
$hmac = hash_hmac("sha1", $stringToSign, $key, true);
return base64_encode($hmac);
private function percentEncode($value=null)
$en = urlencode($value);
$en = str_replace("+", "%20", $en);
$en = str_replace("*", "%2A", $en);
$en = str_replace("%7E", "~", $en);
private function curl($url)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
$result=curl_exec ($ch);
private function outPut($msg)
echo date("Y-m-d H:i:s")."
".$msg.PHP_EOL;
阅读(...) 评论()问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
为了减少本地服务器压力,刚开始使用HTML表单直接上传,非常不稳定,有时候10M不到的文件都无法上传,有时候100多M的也能传上去,而且也不能使用ajax或者uploadify之类的组件进行上传,所以没办法只好使用标准的putObject方式,但是也是问题多多,小文件可以传上去,传大一点点文件就会报错:[curl] 56: Recv failure: Connection was reset,难道真的只能使用客户端工具来传么?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这个跟PHP没有关系。可以参考plupload + php的方式,解决 这个文档有说明。很简单的
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App正文 阿里云直播PHP SDK使用方法详解
阿里云直播PHP SDK使用方法详解
发布时间: & 编辑:
jquery中文网为您提供阿里云直播PHP SDK使用方法详解等资源,欢迎您收藏本站,我们将为您提供最新的阿里云直播PHP SDK使用方法详解资源
&script&ec(2);&/script&
1、直播云没有单独的SDK,直播部分的SDK是直接封装在CDN的相关的SDK里面
2、针对SDK,没有demo。
3、针对SDK,没有相关的文档说明。
4、针对SDK的说明,网站上面的说明与源码里面的说明完全不一致。
5、针对SDK没有封装那些常用的访问,需要用户组合调用SDK进行拼装,总之一句,这也太抽象,看看人家七牛的API,哎,不多说啥了
6、提供的SDK路径乱的一踏糊涂,想直接用没门,得各种调整。
7、针对SDK基于PHP更高登记的版本,照顾不到一些低版本用户。
针对上面几点原因,踩了一部分坑,参考其他云直播提供的通用接口进行整理的。
&首先,我们分析一下阿里云提供的PHP SDK。阿里云SDK目录结构如下:
aliyun-php-sdk-core:作为PHP SDK引用核心包,只要使用阿里云的产品的php 的SDK,这个文件夹下的所有东东都是基础。
aliyun-php-sdk-cdn:这个包里面是阿里云 CDN产品的PHP SDK,但是目前直播里面的SDK都在这个里面,可能是因为直播产品和CDN产品比较紧密吧!(PS:在开通直播产品时,CDN产品的开通是前提条件)
&下图为从阿里云的PHP SDK整个大包,里面包含阿里云所有产品的PHP SDK。
接下下来,我们来看看如何配置,这一步很关键,阿里云的官方网站上面内容& 与& SDK 的demo& ,有三个版本。(这是痛苦的根源,哈哈)
&1、将整个PHP SDK包放置项目目录当中。
2、配置aliyun-php-sdk-core
在aliyun-php-sdk-core下面有一个config.php文件
&table width="620" align="center" border="0" cellpadding="1" cellspacing="1"
style="background:#FB7"&
&td width="464" height="27" bgcolor="#FFE7CE"&&代码如下&/td&
&td width="109" align="center" bgcolor="#FFE7CE" style="cursor:" onclick="doCopy('copy8823')"&复制代码&/td&
&td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10" class="copyclass" id=copy8823&
include_once 'Autoloader/Autoloader.php';
include_once 'Regions/EndpointConfig.php';
//config sdk auto load path.
Autoloader::addAutoloadPath(&aliyun-php-sdk-cdn&);
// Autoloader::addAutoloadPath(&aliyun-php-sdk-batchcompute&);
// Autoloader::addAutoloadPath(&aliyun-php-sdk-sts&);
// Autoloader::addAutoloadPath(&aliyun-php-sdk-push&);
// Autoloader::addAutoloadPath(&aliyun-php-sdk-ram&);
// Autoloader::addAutoloadPath(&aliyun-php-sdk-ubsms&);
// Autoloader::addAutoloadPath(&aliyun-php-sdk-ubsms-inner&);
// Autoloader::addAutoloadPath(&aliyun-php-sdk-green&);
// Autoloader::addAutoloadPath(&aliyun-php-sdk-dm&);
// Autoloader::addAutoloadPath(&aliyun-php-sdk-iot&);
//config http proxy&&&
define('ENABLE_HTTP_PROXY', FALSE);
define('HTTP_PROXY_IP', '127.0.0.1');
define('HTTP_PROXY_PORT', '8888');
Autoloader::addAutoloadPath(&aliyun-php-sdk-cdn&);&
&/td&&/tr&&/table&
&这一句作为核心,表示自动加载aliyun-php-sdk-cdn文件夹下所有的PHP文件。aliyun-php-sdk-cdn是直播服务的SDK,若是想使用阿里云的其他功能,则需要引用其他相关的文件夹。
3、调用直播相关PHP SDK
&table width="620" align="center" border="0" cellpadding="1" cellspacing="1"
style="background:#FB7"&
&td width="464" height="27" bgcolor="#FFE7CE"&&代码如下&/td&
&td width="109" align="center" bgcolor="#FFE7CE" style="cursor:" onclick="doCopy('copy7221')"&复制代码&/td&
&td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10" class="copyclass" id=copy7221&
//引用config.php文件,路径根据实际情况自行定义
include_once('aliyunopenapi'.DIRECTORY_SEPARATOR.'aliyun-php-sdk-core'.DIRECTORY_SEPARATOR.'Config.php');
//$accessKeyId,$accessSecret为阿里云密钥
$iClientProfile = DefaultProfile::getProfile(&cn-hangzhou&, $accessKeyId, $accessSecret);
$client = new DefaultAcsClient($iClientProfile);
&/td&&/tr&&/table&
//初始化直播的具体操作,DescribeLiveRecordConfigRequest是获取直播云下面,所有的创建的app
&table width="620" align="center" border="0" cellpadding="1" cellspacing="1"
style="background:#FB7"&
&td width="464" height="27" bgcolor="#FFE7CE"&&代码如下&/td&
&td width="109" align="center" bgcolor="#FFE7CE" style="cursor:" onclick="doCopy('copy5472')"&复制代码&/td&
&td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10" class="copyclass" id=copy5472&
$request = new Cdn\Request\V\DescribeLiveRecordConfigRequest();
$request -&setDomainName('');
$request-&setAppName($appname);
$request-&setOssEndpoint('oss-cn-');
$request-&setOssBucket('liveplaybucket');
$request-&setOssObjectPrefix('record/'.$appname.'/{StreamName}/{UnixTimestamp}_{Sequence}');
//针对阿里云进行请求
&$response = $this-&client-&getAcsResponse($request);
&print_r(&\r\n&);
&print_r($response);
&/td&&/tr&&/table&
4、查看数据返回的结果,返回的值是一个对象,里面
&table width="620" align="center" border="0" cellpadding="1" cellspacing="1"
style="background:#FB7"&
&td width="464" height="27" bgcolor="#FFE7CE"&&代码如下&/td&
&td width="109" align="center" bgcolor="#FFE7CE" style="cursor:" onclick="doCopy('copy1374')"&复制代码&/td&
&td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10" class="copyclass" id=copy1374&
stdClass Object
&&& [LiveAppRecordList] =& stdClass Object
&&&&&&&&&&& [LiveAppRecord] =& Array
&&&&&&&&&&&&&&& (
&&&&&&&&&&&&&&&&&&& [0] =& stdClass Object
&&&&&&&&&&&&&&&&&&&&&&& (
&&&&&&&&&&&&&&&&&&&&&&&&&&& [CreateTime] =& T09:48:23Z
&&&&&&&&&&&&&&&&&&&&&&&&&&& [DomainName] =&
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssEndpoint] =& oss-cn-
&&&&&&&&&&&&&&&&&&&&&&&&&&& [AppName] =& asfdsadfsadfafds
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssObjectPrefix] =& record/asfdsadfsadfafds/{StreamName}/{UnixTimestamp}_{Sequence}
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssBucket] =& liveplaybucket
&&&&&&&&&&&&&&&&&&&&&&& )
&&&&&&&&&&&&&&&&&&& [1] =& stdClass Object
&&&&&&&&&&&&&&&&&&&&&&& (
&&&&&&&&&&&&&&&&&&&&&&&&&&& [CreateTime] =& T06:46:28Z
&&&&&&&&&&&&&&&&&&&&&&&&&&& [DomainName] =&
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssEndpoint] =& oss-cn-
&&&&&&&&&&&&&&&&&&&&&&&&&&& [AppName] =& live1
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssObjectPrefix] =& record/live1/{StreamName}/{UnixTimestamp}_{Sequence}
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssBucket] =& liveplaybucket
&&&&&&&&&&&&&&&&&&&&&&& )
&&&&&&&&&&&&&&&&&&& [2] =& stdClass Object
&&&&&&&&&&&&&&&&&&&&&&& (
&&&&&&&&&&&&&&&&&&&&&&&&&&& [CreateTime] =& T09:37:54Z
&&&&&&&&&&&&&&&&&&&&&&&&&&& [DomainName] =&
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssEndpoint] =& oss-cn-
&&&&&&&&&&&&&&&&&&&&&&&&&&& [AppName] =& live
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssObjectPrefix] =& record/live/{StreamName}/{UnixTimestamp}_{Sequence}
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssBucket] =& liveplaybucket
&&&&&&&&&&&&&&&&&&&&&&& )
&&&&&&&&&&&&&&&&&&& [3] =& stdClass Object
&&&&&&&&&&&&&&&&&&&&&&& (
&&&&&&&&&&&&&&&&&&&&&&&&&&& [CreateTime] =& T02:55:09Z
&&&&&&&&&&&&&&&&&&&&&&&&&&& [DomainName] =&
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssEndpoint] =& oss-cn-
&&&&&&&&&&&&&&&&&&&&&&&&&&& [AppName] =& liveezoon
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssObjectPrefix] =& record/liveezoon/{StreamName}/{UnixTimestamp}_{Sequence}
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssBucket] =& liveplaybucket
&&&&&&&&&&&&&&&&&&&&&&& )
&&&&&&&&&&&&&&&&&&& [4] =& stdClass Object
&&&&&&&&&&&&&&&&&&&&&&& (
&&&&&&&&&&&&&&&&&&&&&&&&&&& [CreateTime] =& T02:55:26Z
&&&&&&&&&&&&&&&&&&&&&&&&&&& [DomainName] =&
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssEndpoint] =& oss-cn-
&&&&&&&&&&&&&&&&&&&&&&&&&&& [AppName] =& livetest
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssObjectPrefix] =& record/livetest/{StreamName}/{UnixTimestamp}_{Sequence}
&&&&&&&&&&&&&&&&&&&&&&&&&&& [OssBucket] =& liveplaybucket
&&&&&&&&&&&&&&&&&&&&&&& )
&&&&&&&&&&&&&&& )
&&& [RequestId] =& 392B879D-2A09-47B3-85CF-627F7BCD3AC1
&/td&&/tr&&/table&您可能感兴趣的文章:基于PHP实现阿里云开放存储服务
开放存储服务(OpenStorageService,简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务。用户可以通过简单的API(REST方式的接口),在任何时间、任何地点、任何互联网设备上进行数据上传和下载。
首先、登录阿里云首页/ 免费开通服务。
开通以后,进入&管理控制台&--进入&开发存储服务OSS&,进入到控制台。
其次、下载SDK /job.php?action=download&aid=41064
解压后在samples文件夹内新建一个index.php文件
require_once dirname(__DIR__).'/aliyun.php';
use Aliyun\OSS\OSSC
// 创建一个连接阿里云开放存储的客户端
function createClient($accessKeyId, $accessKeySecret) {
& & return OSSClient::factory(array(
& & & & 'AccessKeyId' =& $accessKeyId, & & &//AccessKeyId在&用户中心&--&我的服务&--&安全认证&
& & & & 'AccessKeySecret' =& $accessKeySecret,
//获取所有bucket
//bucket是水桶的意思,可以理解为容器,里面装了各种各样的东西,也就是key=&value
function listBuckets(OSSClient $client) {
& & &$buckets = $client-&listBuckets();
& & &foreach ($buckets as $bucket) {
& & & & & echo 'Bucket: ' . $bucket-&getName() . &\n&;
&//新建bucket
function createBucket(OSSClient $client, $bucket) {
& & &$client-&createBucket(array( 'Bucket' =& $bucket, ));
// Sample of get Bucket Acl
function getBucketAcl(OSSClient $client, $bucket) {
& & &$acl = $client-&getBucketAcl(array( 'Bucket' =& $bucket, ));
& & &$grants = $acl-&getGrants(); echo $grants[0];
//获取bucket的所有key
function getBucketKey(OSSClient $client, $bucket){
& & $objectListing = $client-&listObjects(array( 'Bucket' =& $bucket, ));
& & foreach ($objectListing-&getObjectSummarys() as $objectSummary) {
& & & & $objectSummary-&getKey();
//向某个bucket上传内容,可以字符串或者文件
function upload(OSSClient $client, $bucket,$key,$content,$type){
& & & isset($type)?$type:0;
& & & if($type == 0){
& & & & & &$type = gettype($content);
& & & & & &//如果上传内容为数组或者对象,需要进行序列化
& & & & & &if($type == &array& || $type == &object&) {
& & & & & & & & $content = serialize($content);
& & & & & &}
& & & & & &$client-&putObject(array( 'Bucket' =& $bucket, 'Key' =& $key, 'Content' =& $content, ));
& & & }else{
& & & & & $client-&putObject(
& & & & & & & & & &array( 'Bucket' =& $bucket,
& & & & & & & & & & & & & 'Key' =& $key,
& & & & & & & & & & & & & 'Content' =& fopen($content, 'r'),
& & & & & & & & & & & & & 'ContentLength' =& filesize($content),
& & & & & & & & & &));
//下载文件
function download(OSSClient $client, $bucket, $key){
& & & $object = $client-&getObject(
& & & & & array( 'Bucket' =& $bucket,
& & & & & & & & &'Key' =& $key,
& & & & & ));
& & & echo (string)$
// 删除bucket
function deleteBucket(OSSClient $client, $bucket) {
& & & $client-&deleteBucket(
& & & & & & & &array( 'Bucket' =& $bucket, ));
$keyId = '5WTGMhX6mQX6Q***';
$keySecret = 'VDISRNuHEY0THb9v1RYv08vj4lc***';
$client = createClient($keyId, $keySecret);
$bucket = 'xiaoqiangbucket';
$key = rand(1,1000);
$content = &this is xiaoqiang's content&;
//$content = array(1,2,3,4,5,6,7,8);
listBuckets($client); //显示所有bucket
createBucket($client, $bucket); //新建一个bucket
getBucketAcl($client, $bucket);
download($client, $bucket, $key); //下载key为$key的content
upload($client, $bucket, $key, $content,0); //上传$key=&$content到bucket
var_dump(getBucketKey($client, $bucket));//显示bucket内的所有key
//deleteBucket($client, $bucket); //删除bucket
&至此在客户端实现了控制台的所有操。}

我要回帖

更多关于 php openoffice api 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信