5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHP7.4 - openssl のエラーでハマった件

Posted at

PHP7.3.11で動いていた Laravle6 のプログラムが、PHPを7.4にアップグレードしたところ、下記のエラーが出た。
Symfony\Component\Debug\Exception\FatalThrowableError
Call to undefined function Illuminate\Encryption\openssl_cipher_iv_length()

内容的には難しくて理解できませんが、openssl とあるので、openssl関連のエラーだろうと思い、phpinfo()で調べてみると、openssl拡張機能そのものが組み込まれていない。

そもそも、公式サイト(https://https://windows.php.net/download#php-7.4)
からダウンロードした Windows パッケージでは、openssl はコンパイル時に組み込まれていないことも判明。

自分でコンパイルするほどの芸はないので、php.ini で extension_openssl を有効化するしかありません。
php.ini-developnent をコピーしてphp.iniを作り、中を見ると、はいはい、ちゃんと無効になっていました。
;extension_openssl
コメントを外して有効化。
extension_openssl

ついでに、extension_dir もコメントアウトされていたので、
;extension_dir = "ext"
外しました。
extension_dir = "ext"

さて Apache2.4を再起動して、phpinfo()で確認すると、、、入っていない!

おかしいな、拡張機能のフォルダは "ext" じゃないのか、そんなはずはないとか、あちこちググった挙句、StackOverflow の次の記事で同じ問題が出ているのを発見しました。
How to enable openSSL in PHP 7.4 with Apache Server 2.4?
https://stackoverflow.com/questions/61919440/how-to-enable-openssl-in-php-7-4-with-apache-server-2-4

この質問者の方は、どうやら自分で解決策を見つけて自己レスされています。
それによると、extension_dir の指定を絶対パスで指定してやるというなんとも単純な話でした。
そこで私も、下記のように変更。
extension_dir = "C:\php-7.4.16\ext"

半信半疑で Apacheを再起動すると、「!」、、正解でした。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?