日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

本文為您介紹如何使用阿里云視覺智能開放平臺(tái)相關(guān)服務(wù)的PHP SDK,包括SDK的獲取和安裝方法,以及SDK代碼示例。

說(shuō)明

阿里云視覺智能開放平臺(tái)各類目視覺AI能力SDK接入、接口使用或問題咨詢等,請(qǐng)通過(guò)釘釘群(23109592)加入阿里云視覺智能開放平臺(tái)咨詢?nèi)郝?lián)系我們。

該版本SDK最低環(huán)境要求PHP 5.6,如不滿足請(qǐng)升級(jí)PHP版本。

準(zhǔn)備工作

配置環(huán)境變量

配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET

重要
  • 阿里云賬號(hào)AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維,具體操作,請(qǐng)參見創(chuàng)建RAM用戶

  • 請(qǐng)不要將AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號(hào)下所有資源的安全。

  • Linux和macOS系統(tǒng)配置方法

    1. 在IntelliJ IDEA中打開終端Terminal。

    2. 執(zhí)行以下命令,配置環(huán)境變量。

      <access_key_id>需替換為您RAM用戶的AccessKey ID,<access_key_secret>替換為您RAM用戶的AccessKey Secret。如果后續(xù)需要進(jìn)行更多權(quán)限相關(guān)的配置,具體操作請(qǐng)參見使用RAM Policy控制訪問權(quán)限

      export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> 
      export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
  • Windows系統(tǒng)配置方法

    新建環(huán)境變量文件,添加環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET,并寫入已準(zhǔn)備好的AccessKey ID和AccessKey Secret。然后重啟Windows系統(tǒng)。本操作以Windows 10為例進(jìn)行說(shuō)明。

    1. 打開文件資源管理器,在此電腦上右鍵單擊屬性。

    2. 在右側(cè)導(dǎo)航欄,單擊高級(jí)系統(tǒng)配置

    3. 系統(tǒng)屬性對(duì)話框的高級(jí)頁(yè)簽下,單擊環(huán)境變量

    4. 環(huán)境變量對(duì)話框中,單擊新建(W)。image.png

    5. 在彈出的新建系統(tǒng)變量對(duì)話框中,添加環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET,并寫入已準(zhǔn)備好的AccessKey ID和AccessKey Secret。

    6. 重啟Windows系統(tǒng),使配置生效。

代碼示例

本文以RecognizeBankCard為例。

文件在上海地域OSS

說(shuō)明

每個(gè)類目的訪問域名與對(duì)應(yīng)Region開通能力,請(qǐng)參見訪問域名。

<?php
// 1、這里只是以ocr下的RecognizeBankCard能力為例,其他能力請(qǐng)引入相應(yīng)類目的包和相關(guān)類。包名可參考本文檔上方的SDK包名稱,能力名可參考對(duì)應(yīng)API文檔中的Action參數(shù)。例如您想使用通用分割,其文檔為http://m.bestwisewords.com/document_detail/151960.html,可以知道該能力屬于分割摳圖類目,能力名稱為SegmentCommonImage,那么您需要將代碼中Ocr改為Imageseg,將RecognizeBankCard改為SegmentCommonImage。版本號(hào)V20191230如果有變化也需要修改。
use AlibabaCloud\SDK\Ocr\V20191230\Ocr;
use AlibabaCloud\SDK\Ocr\V20191230\Models\RecognizeBankCardRequest;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;

class Sample {

    /**
     * 使用AK&SK初始化賬號(hào)Client
     * @param string $accessKeyId
     * @param string $accessKeySecret
     * @return Ocr Client
     */
    public static function createClient($accessKeyId, $accessKeySecret){
      //初始化配置對(duì)象Darabonba\OpenApi\Models\Config。
      //Config對(duì)象存放accessKeyId、accessKeySecret、endpoint等配置  
      $config = new Config([
            "accessKeyId" => $accessKeyId,
            "accessKeySecret" => $accessKeySecret
        ]);
        // 2、訪問的域名。注意:這個(gè)地方需要求改為相應(yīng)類目的域名,參考:http://m.bestwisewords.com/document_detail/143103.html
        $config->endpoint = "ocr.cn-shanghai.aliyuncs.com";
        // 3、這里只是以ocr為例,其他能力請(qǐng)引入相應(yīng)類目的Client類
        return new Ocr($config);
    }

    /**
     * @param string[] $args
     * @return void
     */
    public static function main($args) {
        //4、創(chuàng)建AccessKey ID和AccessKey Secret,請(qǐng)參考http://m.bestwisewords.com/document_detail/175144.html。
        // 如果您用的是RAM用戶的AccessKey,還需要為RAM用戶授予權(quán)限AliyunVIAPIFullAccess,請(qǐng)參考http://m.bestwisewords.com/document_detail/145025.html。
        // 從環(huán)境變量讀取配置的AccessKey ID和AccessKey Secret。運(yùn)行示例前必須先配置環(huán)境變量。    
        $accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');      
        $accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
        // 5、這里只是以ocr下的RecognizeBankCard為例,其他能力請(qǐng)使用相應(yīng)類目的包和類,具體入?yún)⒃O(shè)置需要參考具體能力的文檔
        $recognizeBankCardRequest = new RecognizeBankCardRequest();
        $recognizeBankCardRequest->imageURL = "http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/ocr/RecognizeBankCard/yhk1.jpg";
        $runtime = new RuntimeOptions([]);
        try {
            // 6、這里只是以ocr下的RecognizeBankCard為例,其他能力請(qǐng)使用相應(yīng)類目的包和類,注意,recognizeBankCardWithOptions方法名也需要改成對(duì)應(yīng)能力的方法名。方法名是根據(jù)能力名稱按照一定規(guī)范形成的,如能力名稱為SegmentCommonImage,對(duì)應(yīng)方法名應(yīng)該為segmentCommonImageWithOptions。
            $resp = $client->recognizeBankCardWithOptions($recognizeBankCardRequest, $runtime);
            # 獲取整體結(jié)果
            echo Utils::toJSONString($resp->body);
            # 獲取單個(gè)字段,這里只是一個(gè)例子,具體能力下的字段需要看具體能力的文檔
            echo Utils::toJSONString($resp->body->data->cardNumber);
        } catch (Exception $exception) {
            # 獲取整體報(bào)錯(cuò)信息
            echo Utils::toJSONString($exception);
            # 獲取單個(gè)字段
            echo $exception->getCode();
        }
    }
}

// 引入autoload.php
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main(array_slice($argv, 1));
說(shuō)明

需要修改的地方均在上述代碼注釋中標(biāo)明,總結(jié)如下:

  1. 引入包的時(shí)候,需要引入相應(yīng)類目的包和相關(guān)類。包名可參考上文SDK包名稱,能力名稱可參考對(duì)應(yīng)API文檔中的Action參數(shù)。

    例如,您想使用通用分割能力,通過(guò)通用分割A(yù)PI文檔可知該能力屬于分割摳圖類目(imageseg20191230),能力名稱為SegmentCommonImage,您需要將代碼中的ocr20191230改為imageseg20191230,將RecognizeBankCard改為SegmentCommonImage。

  2. 訪問的域名一定要修改為相應(yīng)類目的域名,如果域名類目不匹配會(huì)報(bào)錯(cuò)InvalidAction.NotFound。關(guān)于域名詳情,請(qǐng)參見訪問域名。

  3. Client類需要使用相應(yīng)類目的包下面的Client類。

  4. Request和Response需要使用相應(yīng)類目的包和類。

  5. 調(diào)用Client的方法時(shí),方法名需要改成對(duì)應(yīng)能力的方法名。方法名是根據(jù)能力名稱按照一定規(guī)范形成的。例如,能力名稱為SegmentCommonImage,對(duì)應(yīng)方法名應(yīng)該為segmentCommonImageWithOptions。

文件在本地或可訪問的URL

重要

文件在本地、文件不在同一地域與文件在同地域區(qū)別在于需要使用xxxAdvanceRequest,文件是以Stream形式通過(guò)imageURLObject參數(shù)傳入。

<?php
// 1、這里只是以ocr下的RecognizeBankCard能力為例,其他能力請(qǐng)引入相應(yīng)類目的包和相關(guān)類。包名可參考本文檔上方的SDK包名稱,能力名可參考對(duì)應(yīng)API文檔中的Action參數(shù)。例如您想使用通用分割,其文檔為http://m.bestwisewords.com/document_detail/151960.html,可以知道該能力屬于分割摳圖類目,能力名稱為SegmentCommonImage,那么您需要將代碼中Ocr改為Imageseg,將RecognizeBankCard改為SegmentCommonImage。版本號(hào)V20191230如果有變化也需要修改。
use AlibabaCloud\SDK\Ocr\V20191230\Ocr;
use AlibabaCloud\SDK\Ocr\V20191230\Models\RecognizeBankCardAdvanceRequest;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use GuzzleHttp\Psr7\Stream;

class Sample {

    /**
     * 使用AK&SK初始化賬號(hào)Client
     * @param string $accessKeyId
     * @param string $accessKeySecret
     * @return Ocr Client
     */
    public static function createClient($accessKeyId, $accessKeySecret){
        //初始化配置對(duì)象Darabonba\OpenApi\Models\Config。
        //Config對(duì)象存放accessKeyId、accessKeySecret、endpoint等配置  
        $config = new Config([
            "accessKeyId" => $accessKeyId,
            "accessKeySecret" => $accessKeySecret
        ]);
        // 2、訪問的域名。注意:這個(gè)地方需要求改為相應(yīng)類目的域名,參考:http://m.bestwisewords.com/document_detail/143103.html
        $config->endpoint = "ocr.cn-shanghai.aliyuncs.com";
        // 3、這里只是以ocr為例,其他能力請(qǐng)引入相應(yīng)類目的Client類
        return new Ocr($config);
    }

    /**
     * @param string[] $args
     * @return void
     */
    public static function main($args) {
        //4、創(chuàng)建AccessKey ID和AccessKey Secret,請(qǐng)參考http://m.bestwisewords.com/document_detail/175144.html。
        // 如果您用的是RAM用戶的AccessKey,還需要為RAM用戶授予權(quán)限AliyunVIAPIFullAccess,請(qǐng)參考http://m.bestwisewords.com/document_detail/145025.html。
        // 從環(huán)境變量讀取配置的AccessKey ID和AccessKey Secret。運(yùn)行示例前必須先配置環(huán)境變量。    
        $accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');      
        $accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
        $runtime = new RuntimeOptions([]);
        // 5、這里只是以ocr下的RecognizeBankCard為例,其他能力請(qǐng)使用相應(yīng)類目的包和類,具體入?yún)⒃O(shè)置需要參考具體能力的文檔
        $recognizeBankCardAdvanceRequest = new RecognizeBankCardAdvanceRequest();
        // 場(chǎng)景一,使用本地文件
        $file = fopen('/tmp/bankCard.png', 'rb');
        // 場(chǎng)景二,使用任意可訪問的url
        // $file = fopen('https://viapi-test-bj.oss-cn-beijing.aliyuncs.com/viapi-3.0domepic/ocr/RecognizeBankCard/yhk1.jpg', 'rb');
        $stream = new Stream($file);
        $recognizeBankCardAdvanceRequest->imageURLObject = $stream;
        try {
            // 6、這里只是以ocr下的RecognizeBankCard為例,其他能力請(qǐng)使用相應(yīng)類目的包和類,注意,recognizeBankCardAdvance方法名也需要改成對(duì)應(yīng)能力的方法名。方法名是根據(jù)能力名稱按照一定規(guī)范形成的,如能力名稱為SegmentCommonImage,對(duì)應(yīng)方法名應(yīng)該為segmentCommonImageAdvance。
            $resp = $client->recognizeBankCardAdvance($recognizeBankCardAdvanceRequest, $runtime);
            # 獲取整體結(jié)果
            echo Utils::toJSONString($resp->body);
            # 獲取單個(gè)字段,這里只是一個(gè)例子,具體能力下的字段需要看具體能力的文檔
            echo Utils::toJSONString($resp->body->data->cardNumber);
        } catch (Exception $exception) {
            # 獲取整體報(bào)錯(cuò)信息
            echo Utils::toJSONString($exception);
            # 獲取單個(gè)字段
            echo $exception->getCode();
        }
    }
}

// 引入autoload.php
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main(array_slice($argv, 1));
說(shuō)明

需要修改的地方均在上述代碼注釋中標(biāo)明,總結(jié)如下:

  1. 引入包的時(shí)候,需要引入相應(yīng)類目的包和相關(guān)類。包名可參考上文SDK包名稱,能力名稱可參考對(duì)應(yīng)API文檔中的Action參數(shù)。

    例如,您想使用通用分割能力,通過(guò)通用分割A(yù)PI文檔可知該能力屬于分割摳圖類目(imageseg20191230),能力名稱為SegmentCommonImage,您需要將代碼中的ocr20191230改為imageseg20191230,將RecognizeBankCard改為SegmentCommonImage。

  2. 訪問的域名一定要修改為相應(yīng)類目的域名,如果域名類目不匹配會(huì)報(bào)錯(cuò)InvalidAction.NotFound。關(guān)于域名詳情,請(qǐng)參見訪問域名。

  3. Client類需要使用相應(yīng)類目的包下面的Client類。

  4. Request和Response需要使用相應(yīng)類目的包和類。

  5. 調(diào)用Client的方法時(shí),方法名需要改成對(duì)應(yīng)能力的方法名。方法名是根據(jù)能力名稱按照一定規(guī)范形成。例如,能力名稱為SegmentCommonImage,對(duì)應(yīng)方法名應(yīng)該為segmentCommonImageAdvance。

常見問題

如果安裝composer require alibabacloud/facebody-20191230的SDK或者其他SDK時(shí)出現(xiàn)類似以下問題,可以按照本文提供的解決方案進(jìn)行排查處理。

需要注意的是,安裝SDK后會(huì)生成vendor目錄,在該目錄下不要放項(xiàng)目代碼,項(xiàng)目代碼和vendor是同級(jí)關(guān)系。如下圖所示,src中為代碼,vendor是安裝SDK后生成的。

image

報(bào)錯(cuò)Problem 1...如何解決?

報(bào)錯(cuò)信息

Problem 1
    - alibabacloud/tea-oss-utils 0.3.0 requires guzzlehttp/psr7 ^1.0 -> found guzzlehttp/psr7[1.0.0, ..., 1.9.0] but the package is fixed to 2.4.3 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.

image

解決方案

  1. 因目前SDK只支持1.x版本的Psr7,在PHP 8環(huán)境中安裝需要將Psr7版本降到1.x版本,例如1.9.0版本。具體命令如下:

    composer require guzzlehttp/psr7 1.9.0
    說(shuō)明

    因?yàn)閜sr7依賴guzzlehttp/guzzle,要求guzzlehttp/psr7: ^1.9 || ^2.4,更改版本不會(huì)影響SDK使用。

  2. 若以上步驟仍無(wú)法解決,可以通過(guò)調(diào)用能力的在線調(diào)試入口下載完整工程在項(xiàng)目中引入,在引入工程中,復(fù)制README.md文件里面的PHP命令,可直接運(yùn)行以及下載SDK依賴。

    composer install && php src/Sample.php
    說(shuō)明

    阿里云視覺智能開放平臺(tái)各類目視覺AI能力SDK接入、接口使用或問題咨詢等,請(qǐng)通過(guò)釘釘群(23109592)加入阿里云視覺智能開放平臺(tái)咨詢?nèi)郝?lián)系我們。

報(bào)錯(cuò)Problem 2...如何解決?

報(bào)錯(cuò)信息

Problem 2
 - Root composer.json requires alibabacloud/facebody-20191230 3.0.3 -> satisfiable by alibabacloud/facebody-20191230[3.0.3].
 - alibabacloud/facebody-20191230 3.0.3 requires alibabacloud/tea-oss-utils ^0.3.0 -> found alibabacloud/tea-oss-utils[dev-master, 0.1.0, ..., 0.2.3] but it does not match the constraint.

image

解決方案

可能是鏡像站的原因?qū)е聢?bào)錯(cuò)。

  1. composer config -g repo.packagist composer https://repo.packagist.org。

  2. composer require 需安裝的包依賴。例如:alibabacloud/facebody-20191230。

  3. 若以上步驟仍無(wú)法解決,可以通過(guò)調(diào)用能力的在線調(diào)試入口下載完整工程在項(xiàng)目中引入,在引入工程中,復(fù)制README.md文件里面的PHP命令,可直接運(yùn)行以及下載SDK依賴。

    composer install && php src/Sample.php

調(diào)用報(bào)錯(cuò)如何解決?

如果您的調(diào)用出現(xiàn)報(bào)錯(cuò),請(qǐng)先嘗試升級(jí)SDK包到最新版本,最新版本請(qǐng)參考各類目SDK鏈接。如果您的程序中同時(shí)引入了多個(gè)類目的包,也可以先嘗試將這些包都升級(jí)到最新版本,避免版本之間的包沖突問題。

OpenAPI界面顯示的最新包在packagist倉(cāng)庫(kù)中找不到如何解決?

如果您發(fā)現(xiàn)OpenAPI界面顯示的最新版本的包,在packagist倉(cāng)庫(kù)中找不到,這是因?yàn)樾掳姹镜陌鼊倓偘l(fā)布,倉(cāng)庫(kù)同步可能會(huì)有延遲,如果遇到版本不存在的情況,請(qǐng)稍后再試或使用packagist倉(cāng)庫(kù)中的最新版本。

報(bào)錯(cuò)array_slice() expects parameter 1 to be array, null given in如何解決?

為了結(jié)構(gòu)統(tǒng)一,預(yù)留了一個(gè)數(shù)組入?yún)?。需要?duì)代碼進(jìn)行如下修改:

  • Sample::main(array_slice($argv, 1));中刪除array_slice($argv, 1),保留Sample::main()。

  • public static function main($args){}的main方法中刪除$args。

綜上可解決報(bào)錯(cuò)問題。

報(bào)錯(cuò)RuntimeOptions包引入錯(cuò)誤應(yīng)如何解決?

報(bào)錯(cuò)信息

image

解決方案

該問題是因?yàn)镽untimeOptions的包一般手動(dòng)引入依賴時(shí)出現(xiàn)引入錯(cuò)誤,正確的包是在use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;路徑下,刪除OSSUtils\RuntimeOptions的包后,只留Tea\Utils\Utils\RuntimeOptions的包。

在PHP中調(diào)用接口報(bào)錯(cuò)鏈接訪問失敗如何解決?

報(bào)錯(cuò)信息

在PHP中調(diào)用接口時(shí)返回鏈接為http:\/\/vibktprfx-prod-prod-damo-eas-cn-shanghai.oss-cn-shanghai.aliyuncs.com,復(fù)制并直接訪問該鏈接,會(huì)提示鏈接訪問失敗的提示信息,如下圖所示:

image

解決方案

該問題是由于編譯環(huán)境的問題字符//被轉(zhuǎn)義導(dǎo)致,您可以通過(guò)打印單獨(dú)的imageURL參數(shù)獲取可訪問的URL。例如,$resp->body->data->imageURL。

PHP忽略證書報(bào)錯(cuò)如何解決?

報(bào)錯(cuò)信息

image

解決方案

升級(jí)版SDK可以通過(guò)在Client中設(shè)置OpenAPI的請(qǐng)求協(xié)議(Client設(shè)置的優(yōu)先級(jí)高于默認(rèn)設(shè)置),忽略證書通過(guò)設(shè)置運(yùn)行參數(shù),默認(rèn)忽略證書報(bào)錯(cuò),具體參見HTTPS 請(qǐng)求配置。

關(guān)于PHP在Windows獲取證書的邏輯,依賴于php.ini文件的配置,具體請(qǐng)參見Guzzle

并非所有的系統(tǒng)磁盤上都存在CA包,例如,Windows和OS X并沒有通用的本地CA包。當(dāng)設(shè)置verifytrue時(shí),Guzzle將盡力在您的操作系統(tǒng)中找到合適的CA包,當(dāng)使用cURL或PHP 5.6以上版本的流時(shí),Guzzle將按以下順序嘗試查找CA包:

  1. 檢查php.ini文件中是否設(shè)置了openssl.cafile。

  2. 檢查php.ini文件中是否設(shè)置了curl.cainfo。

  3. 檢查/etc/pki/tls/certs/ca-bundle.crt是否存在( Red Hat、CentOS、Fedora由ca-certificates包提供)。

  4. 檢查/etc/ssl/certs/ca-certificates.crt是否存在(Ubuntu、Debian由ca-certificates包提供)。

  5. 檢查/usr/local/share/certs/ca-root-nss.crt是否存在(FreeBSD、由ca_root_nss包提供)。

  6. 檢查/usr/local/etc/openssl/cert.pem是否存在(OS X由homebrew提供)。

  7. 檢查C:\windows\system32\curl-ca-bundle.crt是否存在(Windows)。

  8. 檢查C:\windows\curl-ca-bundle.crt是否存在(Windows)。

技術(shù)支持

如果以上方法未能解決您的問題,請(qǐng)通過(guò)搜索釘釘群號(hào)(23109592)加入阿里云視覺智能開放平臺(tái)咨詢?nèi)郝?lián)系我們。屆時(shí)會(huì)有專業(yè)的技術(shù)人員與您對(duì)接解決問題。