【PHP】PEAR/HTTP_Request2 2.4.1にバージョンアップして通信出来なくなった問題への対処

PHP logo

先日、HTTP_Request2を2.4.1にバージョンアップしたらクレジット決済が出来なくなって超焦った話を書きました。


【PHP】PEAR/HTTP_Request2がバージョンアップしててハマった話 – NOBODY:PLACE


結果的にはダウングレードして対応したのですが、いつまでもそのままでいるわけにもいかないので、テスト環境を用意して対応を模索していました。バージョンアップしたことで新たに必要な設定が増えたのではないか、そんな予測を元に、HTTP_Request2のコードを読みながらコードを変更していたのですがなかなか正解に当たらない。なんなんだ。

半ば諦め気味に利用するアダプタを Socket から cURL に変えたら……動きました。マジか。


書き換え前

$request = new \HTTP_Request2();
$request->setMethod(\HTTP_Request2::METHOD_POST);
$request->setConfig('ssl_verify_peer',false);

書き換え後

$request = new \HTTP_Request2();
$request->setMethod(\HTTP_Request2::METHOD_POST);
$request->setAdapter('curl');
$request->setConfig('ssl_verify_peer',false);


ChangelogsにSocketまわりのことがあれこれ書いてあったので、その辺で何か挙動が変わったのかも知れません。きちんと調べればSocketで動作する適切な設定も見つかるのかも知れませんが、、ドキュメントも「2.2.1」から更新されてないしもう探すの面倒。これでいいやー。

というわけで、解決しました。



なおcURLを利用するにはPHPのエクステンションが必要です

お使いの環境に合わせてなんしかインストールしてください。