LoginSignup
1
2

More than 5 years have passed since last update.

Google Cloud Platform で cURL error 60: SSL certificate problem ……

Posted at

Google API を使おう!と言う人にとってはアタリマエのことなのかもしれませんが、ワタクシめにはなかなか解決策が見つけられず苦労したので、同じ境遇の人が生まれないようにメモを残します…。

公式のPHP用SDKと使い方はこちら
Google Vision APIのクライアントライブラリ 各言語

何がしたい?

Google Cloud Platform ……の中の、VisionAPIっていうのを、PHPで使おうと思ったんです。サンプルソースコードもあって、Composerでライブラリが組み込めて、楽勝楽勝♪と思っていたのに、このエラーに阻まれました。

Fatal error: Uncaught Google\Cloud\Core\Exception\ServiceException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) in C:\xampp\cloudvision\vendor\google\cloud-core\RequestWrapper.php:245

言いたいことはわかります。SSLをするのにクライアント証明が無いってことですよね。けど、本格的なサービスを作るわけでもなく、試作や開発要サンプルの段階なので、そういうのすっ飛ばしたいんです。

結論

サンプルプログラムはこうなっています。

 $vision = new VisionClient([
     'projectId' => $projectId
 ]);

まず、こうします。このJSONは APIとサービス というページでキーを作ったときにダウンロードされるJSONファイルで、それをプロジェクトディレクトリにコピーしてきてパスを通しておきます。

 $vision = new VisionClient([
     'projectId' => $projectId,
     'keyFilePath' => __DIR__ . '/myproject-xxxxx.json'
 ]);

次に本題。冒頭の cURL error 60 を回避するためにこうします。

 $guzzleClient = new GuzzleHttp\Client(['verify' => false]);
 $vision = new VisionClient([
     'projectId' => $projectId,
     'keyFilePath' => __DIR__ . '/myproject-xxxxx.json',
     'httpHandler' => function ($request, $options = []) use ($guzzleClient) { 
         return $guzzleClient->send($request, $options);
     }
 ]);

感想

VisionClientの公式ドキュメント を眺めていて、なんとなくこの httpHandler っていうのがあやしいなぁという雰囲気はありますが、サンプルがまったくなくて困りました。できてしまうとカンタンであっけないものですが。やっぱりアタリマエのことなのでしょうか…(´ε` )

というわけで、Google Vision APIが、なんとなく動かせるようになったので、もうちょっといろいろ遊んでみたいと思います。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2