Hatena::ブログ(Diary)

system

 | 

2017-02-17

PHP7でcurl、opensslエラー

Windows環境で、ApachePHPの環境を構築。
ずーっと、特に問題なく動いていた。
さて、PHPのバージョンをそろそろ7にあげておこうと思って、zipダウンロードしてきて、解凍インストール
問題なく動いていた、、、ような気がしたのだけれど、
Wordpressアップグレードが出来なくなってしまった。
何度やっても、下記のエラーが出る。

WordPress (ja) の翻訳を更新しています…
ダウンロードに失敗しました。 No working transports found

しばらくは、まぁローカルで動かしているだけだしいいや、と放置していたのだけれど
いい加減直しておこうと思って調べてみる。
このエラー、下記の設定を「php.ini」で有効にする事で解決したという意見が多い。

extension=php_curl.dll
extension=php_openssl.dll

そこで同じようにやってみるのだけれど、エラーは解決せず。全くダメ。
phpinfo()をよくよく見てみると、curlopensslも有効になってない!
色々調べてみて、症状は下記のサイトと全く同じなのだけれど、どうしてこのエラーが起きるのか分からない。

https://teratail.com/questions/27434

状況としては
・Apache2.4
・PHP7.1.2
だとだめ。
PHPのバージョンを5.6に戻すとcurlopensslも問題なく動く(wordpressアップグレードも問題なくできる)というもの。
PHP5.6に戻して動くのならWindowspathがおかしいとも考えられないし、、、どういうこと???
延々調べていたら

PHP7ではOpenSSL1.0.2以降のバージョンが要求されています。

という情報を発見。
apache/bin の下に「libeay32.dll」「ssleay32.dll」というファイルがあるのだけれど、これのバージョンが古い?ということらしい。

というわけで、OpenSSLの新バージョンをインストール
公式にはソースしかないので、Windows版を配布しているサイトから持ってくる。
は「Win64 OpenSSL v1.0.2k」を選択してインストール後、インストールディレクトリの中から「libeay32.dll」「ssleay32.dll」のふたつを取り出して、
apache/bin/以下にある同名ファイルを置き換える。
Apache再起動したら、、、動いた!

というわけで、情報にたどり着くまで結構時間がかかっちゃったので、誰かの役に立ってほしいな、と言うことでメモ。

めておめてお 2018/09/02 10:07 こちらの記事を参照させていただき、一発で事象解決しました。
助かりました!ありがとうございます!

トラックバック - http://d.hatena.ne.jp/yamaback/20170217/1487305511
 |