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

PHP

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

說明

阿里云視覺智能開放平臺各類目視覺AI能力SDK接入、接口使用或問題咨詢等,請通過釘釘群(23109592)加入阿里云視覺智能開放平臺咨詢群聯系我們。

該版本SDK最低環境要求PHP 5.6,如不滿足請升級PHP版本。

準備工作

配置環境變量

配置環境變量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET

重要
  • 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維,具體操作,請參見創建RAM用戶

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

  • Linux和macOS系統配置方法

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

    2. 執行以下命令,配置環境變量。

      <access_key_id>需替換為您RAM用戶的AccessKey ID,<access_key_secret>替換為您RAM用戶的AccessKey Secret。如果后續需要進行更多權限相關的配置,具體操作請參見使用RAM Policy控制訪問權限

      export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> 
      export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
  • Windows系統配置方法

    新建環境變量文件,添加環境變量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET,并寫入已準備好的AccessKey ID和AccessKey Secret。然后重啟Windows系統。本操作以Windows 10為例進行說明。

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

    2. 在右側導航欄,單擊高級系統配置

    3. 系統屬性對話框的高級頁簽下,單擊環境變量

    4. 環境變量對話框中,單擊新建(W)image.png

    5. 在彈出的新建系統變量對話框中,添加環境變量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET,并寫入已準備好的AccessKey ID和AccessKey Secret。

    6. 重啟Windows系統,使配置生效。

代碼示例

本文以RecognizeBankCard為例。

文件在上海地域OSS

說明

每個類目的訪問域名與對應Region開通能力,請參見訪問域名

<?php
// 1、這里只是以ocr下的RecognizeBankCard能力為例,其他能力請引入相應類目的包和相關類。包名可參考本文檔上方的SDK包名稱,能力名可參考對應API文檔中的Action參數。例如您想使用通用分割,其文檔為http://bestwisewords.com/document_detail/151960.html,可以知道該能力屬于分割摳圖類目,能力名稱為SegmentCommonImage,那么您需要將代碼中Ocr改為Imageseg,將RecognizeBankCard改為SegmentCommonImage。版本號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初始化賬號Client
     * @param string $accessKeyId
     * @param string $accessKeySecret
     * @return Ocr Client
     */
    public static function createClient($accessKeyId, $accessKeySecret){
      //初始化配置對象Darabonba\OpenApi\Models\Config。
      //Config對象存放accessKeyId、accessKeySecret、endpoint等配置  
      $config = new Config([
            "accessKeyId" => $accessKeyId,
            "accessKeySecret" => $accessKeySecret
        ]);
        // 2、訪問的域名。注意:這個地方需要求改為相應類目的域名,參考:http://bestwisewords.com/document_detail/143103.html
        $config->endpoint = "ocr.cn-shanghai.aliyuncs.com";
        // 3、這里只是以ocr為例,其他能力請引入相應類目的Client類
        return new Ocr($config);
    }

    /**
     * @param string[] $args
     * @return void
     */
    public static function main($args) {
        //4、創建AccessKey ID和AccessKey Secret,請參考http://bestwisewords.com/document_detail/175144.html。
        // 如果您用的是RAM用戶的AccessKey,還需要為RAM用戶授予權限AliyunVIAPIFullAccess,請參考http://bestwisewords.com/document_detail/145025.html。
        // 從環境變量讀取配置的AccessKey ID和AccessKey Secret。運行示例前必須先配置環境變量。    
        $accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');      
        $accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
        // 5、這里只是以ocr下的RecognizeBankCard為例,其他能力請使用相應類目的包和類,具體入參設置需要參考具體能力的文檔
        $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為例,其他能力請使用相應類目的包和類,注意,recognizeBankCardWithOptions方法名也需要改成對應能力的方法名。方法名是根據能力名稱按照一定規范形成的,如能力名稱為SegmentCommonImage,對應方法名應該為segmentCommonImageWithOptions。
            $resp = $client->recognizeBankCardWithOptions($recognizeBankCardRequest, $runtime);
            # 獲取整體結果
            echo Utils::toJSONString($resp->body);
            # 獲取單個字段,這里只是一個例子,具體能力下的字段需要看具體能力的文檔
            echo Utils::toJSONString($resp->body->data->cardNumber);
        } catch (Exception $exception) {
            # 獲取整體報錯信息
            echo Utils::toJSONString($exception);
            # 獲取單個字段
            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));
說明

需要修改的地方均在上述代碼注釋中標明,總結如下:

  1. 引入包的時候,需要引入相應類目的包和相關類。包名可參考上文SDK包名稱,能力名稱可參考對應API文檔中的Action參數。

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

  2. 訪問的域名一定要修改為相應類目的域名,如果域名類目不匹配會報錯InvalidAction.NotFound。關于域名詳情,請參見訪問域名

  3. Client類需要使用相應類目的包下面的Client類。

  4. Request和Response需要使用相應類目的包和類。

  5. 調用Client的方法時,方法名需要改成對應能力的方法名。方法名是根據能力名稱按照一定規范形成的。例如,能力名稱為SegmentCommonImage,對應方法名應該為segmentCommonImageWithOptions。

文件在本地或可訪問的URL

重要

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

<?php
// 1、這里只是以ocr下的RecognizeBankCard能力為例,其他能力請引入相應類目的包和相關類。包名可參考本文檔上方的SDK包名稱,能力名可參考對應API文檔中的Action參數。例如您想使用通用分割,其文檔為http://bestwisewords.com/document_detail/151960.html,可以知道該能力屬于分割摳圖類目,能力名稱為SegmentCommonImage,那么您需要將代碼中Ocr改為Imageseg,將RecognizeBankCard改為SegmentCommonImage。版本號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初始化賬號Client
     * @param string $accessKeyId
     * @param string $accessKeySecret
     * @return Ocr Client
     */
    public static function createClient($accessKeyId, $accessKeySecret){
        //初始化配置對象Darabonba\OpenApi\Models\Config。
        //Config對象存放accessKeyId、accessKeySecret、endpoint等配置  
        $config = new Config([
            "accessKeyId" => $accessKeyId,
            "accessKeySecret" => $accessKeySecret
        ]);
        // 2、訪問的域名。注意:這個地方需要求改為相應類目的域名,參考:http://bestwisewords.com/document_detail/143103.html
        $config->endpoint = "ocr.cn-shanghai.aliyuncs.com";
        // 3、這里只是以ocr為例,其他能力請引入相應類目的Client類
        return new Ocr($config);
    }

    /**
     * @param string[] $args
     * @return void
     */
    public static function main($args) {
        //4、創建AccessKey ID和AccessKey Secret,請參考http://bestwisewords.com/document_detail/175144.html。
        // 如果您用的是RAM用戶的AccessKey,還需要為RAM用戶授予權限AliyunVIAPIFullAccess,請參考http://bestwisewords.com/document_detail/145025.html。
        // 從環境變量讀取配置的AccessKey ID和AccessKey Secret。運行示例前必須先配置環境變量。    
        $accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');      
        $accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
        $runtime = new RuntimeOptions([]);
        // 5、這里只是以ocr下的RecognizeBankCard為例,其他能力請使用相應類目的包和類,具體入參設置需要參考具體能力的文檔
        $recognizeBankCardAdvanceRequest = new RecognizeBankCardAdvanceRequest();
        // 場景一,使用本地文件
        $file = fopen('/tmp/bankCard.png', 'rb');
        // 場景二,使用任意可訪問的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為例,其他能力請使用相應類目的包和類,注意,recognizeBankCardAdvance方法名也需要改成對應能力的方法名。方法名是根據能力名稱按照一定規范形成的,如能力名稱為SegmentCommonImage,對應方法名應該為segmentCommonImageAdvance。
            $resp = $client->recognizeBankCardAdvance($recognizeBankCardAdvanceRequest, $runtime);
            # 獲取整體結果
            echo Utils::toJSONString($resp->body);
            # 獲取單個字段,這里只是一個例子,具體能力下的字段需要看具體能力的文檔
            echo Utils::toJSONString($resp->body->data->cardNumber);
        } catch (Exception $exception) {
            # 獲取整體報錯信息
            echo Utils::toJSONString($exception);
            # 獲取單個字段
            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));
說明

需要修改的地方均在上述代碼注釋中標明,總結如下:

  1. 引入包的時候,需要引入相應類目的包和相關類。包名可參考上文SDK包名稱,能力名稱可參考對應API文檔中的Action參數。

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

  2. 訪問的域名一定要修改為相應類目的域名,如果域名類目不匹配會報錯InvalidAction.NotFound。關于域名詳情,請參見訪問域名

  3. Client類需要使用相應類目的包下面的Client類。

  4. Request和Response需要使用相應類目的包和類。

  5. 調用Client的方法時,方法名需要改成對應能力的方法名。方法名是根據能力名稱按照一定規范形成。例如,能力名稱為SegmentCommonImage,對應方法名應該為segmentCommonImageAdvance。

常見問題

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

需要注意的是,安裝SDK后會生成vendor目錄,在該目錄下不要放項目代碼,項目代碼和vendor是同級關系。如下圖所示,src中為代碼,vendor是安裝SDK后生成的。

image

報錯Problem 1...如何解決?

報錯信息

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環境中安裝需要將Psr7版本降到1.x版本,例如1.9.0版本。具體命令如下:

    composer require guzzlehttp/psr7 1.9.0
    說明

    因為psr7依賴guzzlehttp/guzzle,要求guzzlehttp/psr7: ^1.9 || ^2.4,更改版本不會影響SDK使用。

  2. 若以上步驟仍無法解決,可以通過調用能力的在線調試入口下載完整工程在項目中引入,在引入工程中,復制README.md文件里面的PHP命令,可直接運行以及下載SDK依賴。

    composer install && php src/Sample.php
    說明

    阿里云視覺智能開放平臺各類目視覺AI能力SDK接入、接口使用或問題咨詢等,請通過釘釘群(23109592)加入阿里云視覺智能開放平臺咨詢群聯系我們。

報錯Problem 2...如何解決?

報錯信息

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

解決方案

可能是鏡像站的原因導致報錯。

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

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

  3. 若以上步驟仍無法解決,可以通過調用能力的在線調試入口下載完整工程在項目中引入,在引入工程中,復制README.md文件里面的PHP命令,可直接運行以及下載SDK依賴。

    composer install && php src/Sample.php

調用報錯如何解決

如果您的調用出現報錯,請先嘗試升級SDK包到最新版本,最新版本請參考各類目SDK鏈接。如果您的程序中同時引入了多個類目的包,也可以先嘗試將這些包都升級到最新版本,避免版本之間的包沖突問題。

OpenAPI界面顯示的最新包在packagist倉庫中找不到如何解決?

如果您發現OpenAPI界面顯示的最新版本的包,在packagist倉庫中找不到,這是因為新版本的包剛剛發布,倉庫同步可能會有延遲,如果遇到版本不存在的情況,請稍后再試或使用packagist倉庫中的最新版本。

報錯array_slice() expects parameter 1 to be array, null given in如何解決

為了結構統一,預留了一個數組入參。需要對代碼進行如下修改:

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

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

綜上可解決報錯問題。

報錯RuntimeOptions包引入錯誤應如何解決?

報錯信息

image

解決方案

該問題是因為RuntimeOptions的包一般手動引入依賴時出現引入錯誤,正確的包是在use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;路徑下,刪除OSSUtils\RuntimeOptions的包后,只留Tea\Utils\Utils\RuntimeOptions的包。

在PHP中調用接口報錯鏈接訪問失敗如何解決?

報錯信息

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

image

解決方案

該問題是由于編譯環境的問題字符//被轉義導致,您可以通過打印單獨的imageURL參數獲取可訪問的URL。例如,$resp->body->data->imageURL

PHP忽略證書報錯如何解決?

報錯信息

image

解決方案

升級版SDK可以通過在Client中設置OpenAPI的請求協議(Client設置的優先級高于默認設置),忽略證書通過設置運行參數,默認忽略證書報錯,具體參見HTTPS 請求配置

關于PHP在Windows獲取證書的邏輯,依賴于php.ini文件的配置,具體請參見Guzzle

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

  1. 檢查php.ini文件中是否設置了openssl.cafile

  2. 檢查php.ini文件中是否設置了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)。

技術支持

如果以上方法未能解決您的問題,請通過搜索釘釘群號(23109592)加入阿里云視覺智能開放平臺咨詢群聯系我們。屆時會有專業的技術人員與您對接解決問題。