クライアントが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) ) );
転写しただけなので、よく分かってないのですが、これでいいみたいです。