WordPressのプラグイン更新で「cURL error 60:~」という類のエラーが出た時の対処法

お世話になります!

この度、数年ぶりにブログでも更新したろかいと思い立ち、ワードプレスの管理画面を立ち上げた時の事です。

ダッシュボード下にある更新ボタンをふと見ると、「更新⓮」の文字。

こういうやつ↓

(既に更新してしまったので①になりました)

ワードプレス自体のバージョンアップはもちろんのこと、ワードプレステーマやプラグインの更新を合わせると14個の更新項目がありますよ、というお知らせですね。

多くない?

まぁとは言いつつ、いつもは更新ボタンを押したらそれで終わりなので押下しておとなしく待っていたんですが、ワードプレステーマの更新時、下記の様なエラーが。

cURL error 60: The certificate issuer’s certificate has expired. Check your system date and time.

 

・・・ha??

 

完全に初めてみたエラーです。

今回は、色々と自分なりに調べまして、この問題を解決した方法をシェアします。

ちなみに僕はプログラミングの知識は全くの0なので、細かい専門用語とかはよくわからないので使いま(えま)せん。

ただ、ワードプレスのエラーはできるだけ何らかのコピペで解決したい族の私でもとりあえずなんとかなったので、ご参考までに。

「cURL error 60:~」とは何なのか

結論から言うと、これは

WordPress側のPHPの curl がHTTPS接続の認証につかう証明書ファイルが取得できない。もしくは証明書の安全性が確認できない為に発生したエラー」です。

どういうことだよ。

PHP…動的にWebページを生成することができるサーバー側のスクリプト言語の一種
cURL…プロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供するプロジェクト

色々調べた結果、簡潔に言い換えると、「サーバー側が発行しているSSL証明書に何か問題があるので、通信エラー出ちゃいました。ということのようです。

偉そうに用語解説を入れましたが、その時点の僕の理解度は「SSLはなんとなく聞いたことある…。セキュリティ方面のやつだよな…?」というレベルです。やべえ。

「cURL error 60:~」の解決方法

これも結論から言いますと、僕は下記の PHP コードを functions.php に追記することで解決となりました。

add_action('http_api_curl', function( $handle ){  curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);}, 10);

このコードは、「SSL/TLS 接続における証明書の検証を行わない様にする」というコードです。

つまり、「ちょっとなんか証明書ファイルの確認ができないので、そもそも検証自体するな。」とWordPressに命令するコードということです。

こちらは「ぶっちろぐ(https://bucci.bp7.org/archives/41857/)」さんのブログを参考にさせていただきました。ありがとうございます。

ちなみに本来は証明書ファイルを正しく認識させる為に、「中間証明書というものを新たに取得してサーバーに保存した後、 PHP の curl ライブラリがその証明書ファイルを使用するように php.ini を変更する」というのが正しい解決方法のようです。

だからどういうことだよ。

結果的に、そちらは僕には到底不可能に思えたので上記の方法での解決を選びました。

エラー解決の具体的な手順

では実際にPHPコードを functions.php に追記する方法について解説していきます。

とは言っても、単純にワードプレス管理画面の「テーマ編集」から functions.phpを選択し、コードを記述するだけです。(子テーマではなく親テーマの方を編集します)

 

が。

僕は一度、軽率に親テーマのPHPコードをいじくりまわした結果、サイトが純白になって編集すら無理になる

という苦い経験をしましたので、直接ここを弄るのがめちゃくちゃ怖い。
(なんならそのせいではてなブログからワードプレスに移行するハメになりました。

という訳で、FTPソフトを使って編集することにしました。

FTPソフト…サーバーにファイルをアップロードしたり、サーバにあるファイルをダウンロードしたりする際に使うファイル転送用ソフトウェア

これを使うことで、サーバー側に保存してあるファイルを個別に抜き出して、そっくりそのまま自分のPCに移す(バックアップ)ことができます。

逆も可です。

つまり、何かサーバー側でトラブルが起きて管理画面にすら入れなくなったとしても、FTPソフト上でPCにうつしたバックアップファイルをサーバー側に戻せば復元可能ということになります。

FTPソフトの紹介

僕が使ったFTPソフトは「FileZilla」です。無料で通信速度が鬼早いということだったので、どなたにもおすすめできます。

ダウンロードページ

FileZillaの紹介はこのサイトがめちゃくちゃわかりやすいのでこちらを参照してください。

「サルワカ」さん(https://saruwakakun.com/html-css/wordpress/filezilla

ちなみに functions.phpのある場所は、FileZillaアプリのサーバーサイドの

サイトURL➡public_html➡wp-content➡themes➡テーマ名

の中にある(事が多いと思います)です。

functions.phpを編集する

functions.phpを見つけたら、さっそく編集しましょう。

functions.phpのファイル上で右クリック、表示/編集を選びます。

そうするとテキストエディタが開き、functions.phpに記述してあるコードが編集できます。

このエディタ上で、先ほどのコードを記述すれば作業は終了です。

ちなみに右クリックで「表示/編集」をしてもテキストエディタを開けない場合は、上部のツールバー「編集」➡「設定」から通常使用するテキストエディタを指定しておけば問題ありません。

さらにちなむと、上記画像のテキストエディタは「Visual Studio Code」というエディタです。

「メモ帳」の見た目がダサすぎて使いたくないという方がもしいたらご参考に。無料です。

「cURL error 60:~」エラー解決までの試行錯誤

一応、この方法にたどり着くまでには紆余曲折ありまして対応策として以下の様なものも試しました。

  1. PHPのバージョンを最新に
  2. プラグインの全停止
  3. SSLを解除した後、再導入

僕は functions.phpへのコード記述で解決しましたが、上記の方法で直る方もいるかもしれませんのでそちらも併せて解説しておきます。

❶PHPのバージョンを最新に

僕はそもそもブログを放置していたので、サーバー側のPHPヴァージョンも5世代くらい前のまま放置されていました。

まずはこれを最新バージョンにすることから始めましたが、結果的にうまくいかず。

ちなみにこれはサーバーの管理画面からワンボタンで可能です。簡単。

❷プラグインを全停止

ワードプレスのエラーと言えプラグインが悪さをするというのが定番ですよね。

なのでまずはプラグインを全停止。元々沢山プラグインを入れてはいませんでしたが、必要のないものは全削除しました。

しかしこちらも上手くいかず。

❸サーバー側のSSLを解除した後、再導入

SSL証明書に問題があるなら、サーバー側で設定したSSLを一から再設定し直せばいけるのでは?という方法。

僕は上手くいかなかったのですが、この方法で解決した方を一人見つけたので、一考の価値はありそうです。

ただし、SSLを一旦解除して再設定する際は、反映までに数時間かかることもあるので、それまでの間サイトのhttpsが外れるということにはご注意ください。

 

まとめ

ブログって意外と放置されがちじゃないですか。

なのでもし同じような症状の方がいれば、この記事が参考になれば嬉しいです。

もちろんプログラミングの専門の方が解説された方が安心なのでしょうが、正直専門の方の記事は書いてることが難しすぎて僕は「わからないことがわからない」状態だったので、できるだけ難しい言葉は使わずに説明することを心掛けました。

僕の様に「わからないことがわからない」方の何かの参考になれば幸いです。

※PHPの変更や追記に伴う不具合が生じても責任を負えませんので、作業前は必ずバックアップを。自己責任でお願いします。

以上です。

最新情報をチェックしよう!