PHPライブラリ を使用してTwilio経由でメッセージを送信しようとすると、このエラーに苦労します。
_Fatal error: Uncaught exception Services_Twilio_TinyHttpException with message SSL certificate problem: self signed certificate in certificate chain thrown in F:\path\to\site\twilio-php\Services\Twilio\TinyHttp.php on line 119
_
Windows 7でwampを使用しています。
もちろん、証明書エラーに関する他のすべての投稿を見つけました。私が見ることができるものから、通常_cacert.pem
_ファイルを更新または追加すると問題が修正されます。ただし、これを行った後でも、同じエラーが発生します。
ここでの健全性チェックはまさに私がやったことです:
c:/wamp/certs/cacert.pem
_curl.cainfo = c:/wamp/certs/cacert.pem
_そして、私はまだ同じエラーを受け取っています。 phpinfo()
を使用して正しいphp.iniを編集していることを確認しました。まだ文句を言っている理由について私は途方に暮れています。
_cacert.pem
_ファイルが見つかって読み取られていることを100%確認する方法はありますか?私はphpinfo()
をチェックしましたが、そこには言及されていません。 _cacert.pem
_を使用している場合、どこで言うべきですか?
ありがとう!
私はまったく同じ問題を抱えていた
次の手順を実行します:
次のファイルをダウンロードします- cacert.pem
次に、次のファイルをダウンロードします- thawte_Premium_Server_CA.pem
テキストエディタで2番目のファイルを開き、その内容を最初のファイルにコピーします(一番下/最後のcacert.pem
)。
cacert.pem
を保存し、次の行をphp.ini
に追加します。
[curl]
curl.cainfo=c:/xampp/php/cacert.pem
明らかに、あなたのペムがあるディレクトリに変更してください。 phpローカルサーバー(xampp/wamp)を再起動します。その後、問題なく動作します。
ありがとう。
TinyHttp.phpを編集します
CURLOPT_SSL_VERIFYPEER => FALSE,
を$ opts配列に追加します
Twilioを使用していませんが、Windowsを使用しており、OPで説明されている正確な問題がありました。これを解決するには、ca-bundle.crt
このページのファイルで、php.iniを指定します。 http://curl.haxx.se/docs/caextract.html
私の場合、上記のダウンロードリンクのcacert.pemは機能しませんでしたが、 .12.5 などの以前のtwilio phpライブラリパッケージのcacert.pemは機能しました。新しいパッケージのtwilio.phpを変更して、次の2行を追加しました
CURLOPT_CAINFO => dirname(FILE) . '/cacert.pem'
'cafile' => dirname(FILE) . '/cacert.pem'
古いパッケージとして対応する場所にコピーし、cacert.pemも新しいパッケージにコピーしました。
Tiny_http.phpをハッキングする代わりに、次のような選択したオプションでTwilioのCurlClientコンストラクターを呼び出すことにより、独自のcURLオプションを追加できます。
$client = new \Twilio\Rest\Client($accountSid, $authToken);
$curlOptions = [ CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false];
$client->setHttpClient(new CurlClient($curlOptions));
try {
$call = $client->calls->create($from_phone, $phone_number, $callback_url);
print 'Call queued with Twilio';
} catch (\Exception $ex) {
print 'Twilio error: ' . $ex->getMessage();
}
Twilioからの公式の回答は次のとおりです。
この問題を解決するには、次のことを試してください。
1次のpemファイルをダウンロードします。 https://twilio.zendesk.com/attachments/token/EenviU5Rv4KHUzGM6VP5UijB0/?name=cacert.pem
2このファイルをc:\cert\cacert.pem
(Windows)またはUnix/Linux/Macインストールのその他のパス
3お気に入りのエディターでphp.iniファイルを開きます
次の構成の場合string: curl.cainfo
はphp.iniに存在します。「;
"、このメールに添付されているcacert.pemファイルを指すようにパスを変更します。例:
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
curl.cainfo=c:\cert\cacert.pem
5 Apacheサービスを再起動して、変更を適用してください(非常に重要です!)
私にとって、ここに投稿された答えはどれもうまくいきませんでした。
しかし、その後、PHPを7.0.1 *にアップグレードしたため、このエラーはなくなりました:Services_Twilio_TinyHttpException: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL
。
*(C:\wamp\bin\php\php-7.0.1-Win32-VC14-x64
の代わりに C:\wamp\bin\php\php5.4.3
)
と私 C:\wamp\bin\php\php-7.0.1-Win32-VC14-x64\php.ini
はすでに含まれていましたcurl.cainfo=C:/wamp/cacert.pem
。
誰も[ini-tag]
に言及していないため、この回答を追加します
[curl]
curl.cainfo=C:\cacert.pem
cacert.pemはここからダウンロードされます: https://twilio.zendesk.com/attachments/token/EenviU5Rv4KHUzGM6VP5UijB0/?name=cacert.pem