We are ACORN!

プログラムやサーバーの設定など、技術的な記事を載せております。

PHP Salesforce プログラミング

PHP Toolkit のSoapClientが接続できない

投稿日:2019-01-19 更新日:

クライアントがPHPのバージョンを5.4から5.6にアップデートしたそうです。
(そういう時は前もって連絡ください(怒)

その際、エラーが出るというのです。
ログを見ると、
SoapClientの__doRequestでCould not connect to hostが出ています。

何となくSSL関連じゃないの? と思いながらGoogle先生にお尋ねしていたんですが、「これ!」という結果が見つからず難渋しました。
解決するのに時間が掛かったので、忘備録として残しておきます。

PHPは5.6になってSSLの検証がデフォルトで働くそうなのですが、SSLの検証で失敗するので接続できないようです。
それで、そのSSLの検証を使用しないようにすることで通信できます。

本来はCAバンドルを上書きする必要があるようですが、この辺りはよくわかりません(笑)
(参考)http://php.net/manual/ja/migration56.openssl.php

実際opensslで接続してみると、エラーが報告されます。
openssl s_client -connect login.salesforce.com:443
> Verify return code: 20 (unable to get local issuer certificate)

■修正前

$sfClient = new SforcePartnerClient();
$sfClient->createConnection($wsdl);

■修正後

$opts = array(
  'ssl' => array('verify_peer'=>false, 'verify_peer_name'=>false)
);

$sfClient = new SforcePartnerClient();
$sfClient->createConnection($wsdl, null,
  array(
    'stream_context' => stream_context_create($opts)
  )
);

転写しただけなので、よく分かってないのですが、これでいいみたいです。

-PHP, Salesforce, プログラミング


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

【PHP】ビルトインウェブサーバーで楽々テスト環境

teratailで質問に答えるようになったら、以外にサーバー立てずにテストして、ローカル制限に引っかかっている人が多いので、簡単に立てられるローカルサーバーの構築方法を書いておこうと思います。 まず、 …

MarkDownDiagram

マークダウンで画面遷移図などのダイアグラムを作れるツールをブラウザベースで作ってくださった方がおられます。 大変重宝していて、業務で使いまくりです。 https://github.com/wakufa …

BEMを使ってコーディングする

様々なクラス名の名づけルールがありますが、その中でもBEMはコンポーネント化のしやすさや、詳細度によるミスがないことなど、いくつか利点があります。

margin?padding?

HTMLコーディングでの余白の付け方

HTMLコーディング初学者で良くあるのが、カンプからHTMLにするところまではうまく行くものの余白の付け方がうまく行かない、ということかもしれません。 余白をどのように付ければ良いのでしょうか。

HTMLの見出しタグの使い方

HTMLでコーディングしていると見出しタグ(h1とかh2とか)をどのように付けようか迷うことがありませんか? そんなときには文書構造を考えるようにしましょう。