旧CPIシェアードプランにて cURLエラーでWordPressの自動更新やプラグインインストールができない問題への対応

旧CPIシェアードプランにて cURLエラーでWordPressの自動更新やプラグインインストールができない問題への対応

2018年3月12日

CPIさんのレンタルサーバの現行プランはACE01ですが、その前は「シェアードプラン Zシリーズ」というプランが提供されていました。
CPIは共用サーバで容量無制限というのをウリにしていますが、そのプランが最初に導入されたのが2011年7月5日。「シェアードプラン ZZ-01」という名称でした。
この日より前に契約された場合は、「シェアードプラン Z-1~Z-5」というプランでの利用になっているはずです。

この旧シェアードプランZシリーズ(Z-1~Z-5)を利用している場合、PHPのバージョンアップが5.2.8までしか提供されません。
このバージョンでは、SSL 3.0を使う設定になっているようなのですが、以前騒ぎになったようにSSL 3.0に脆弱性が報告されたことを受けて無効化され、CPIのサーバとWordPress.orgのサーバで通信ができなくなりました。

この環境下でWordPressのダッシュボードから本体やプラグインの更新をしようとしても、以下のエラーが表示されて更新が失敗します。

***の更新中にエラーが発生しました: ダウンロードに失敗しました。 cURL error 35: error:0D0890A1:asn1 encoding routines:ASN1_verify:unknown message digest algorithm

もちろん自動更新も動作しません。FTP経由でコアファイルやテーマ・プラグインを手動でアップしないと、更新やインストールができない状態になっていました。

レンタルサーバですと、この問題はPHPのバージョンアップをすれば解決する場合が多いのですが、CPIさんでは旧シェアードプランへのPHPのバージョンアップはもう提供されない様子なので、対応方法がないと諦めていました。
が、旧プラン利用者にもTLS1.2 に対応したPHPが提供されることがいつの間にか発表されていました。

簡単にまとめますと、上記のcURLエラーでダッシュボードからWordPressの更新ができない場合は、ドメインルートの.htaccessに以下のような記述をします。

おそらく既に AddHandler x-httpd-php528 .php が書かれているはずなので、528のあとに a をつけるだけです。なければ追記してください。
これでダッシュボードからの更新ができるようになります。なるはずです。

※なお、上記サポートページには

「TLS1.2」に対応した PHP はいつから使えますか?また利用方法を教えてください。

「TLS1.2」に対応した PHP は、各プランのセキュリティ対応(MG は Apache のアップグレード)以降にご利用いただけます。現在ご利用いただけませんのでご注意ください。

と記載があります。おそらく対応時には、契約のメールアドレスにお知らせが来ているのと思うので確認してみてください。
ちなみに私は発注元企業様からサーバ情報だけをお預かりしている立場なので、メールは受け取っていません。でももう既に問題なく使えていました。

Zシリーズよりももっと古いプランをご利用の場合も、このページに記載があればこの方法で対応できるようです。

ただし、PHP5.2系のサポートは既に2011年に終了しています。
WordPress側でも、今のところ本体はギリギリ5.2.4以上で動くものの、配布されているテーマやプラグインでPHP5.2で動くものはどんどん減ってきています。
最近、「プラグインをアップデートしたらサイトが見えなくなった!」というご相談があったのですが、調べてみたらPHPが5.2系でした。
古いPHPを使っていると、プラグインアップデートで簡単にサイトが死にます。
ですので、この対応はあくまで暫定的なものと考え、お早めに PHP7が使えるサーバへの移行を検討してください。

個人的な経験で言いますと、PHP5.2系のWordPressから投稿をエクスポートして新サイトにインポートする作業がかなり大変だったので、今後は追加費用をいただこうかと思っています…。

ZZ-01、およびACE01を利用の場合はPHP5.6.19が利用できるため、問題が出ている場合はPHPのアップデートを優先して実施してください。

※先日某Slackで目にした、「PHP7への移行率が驚くべき低さで某サーバ屋の担当さんが悩んでいる」的な話がとても印象的でした。
WordPressだけ使ってるサイトなら良いんですが、他のPHPアプリケーションが入っているとわりとPHP7でまともに動かないことも多いので、そうだよねー大変だよねー、と思いました。