Quantcast
Channel: PHP7.4タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 113

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

$
0
0

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を再起動すると、「!」、、正解でした。


Viewing all articles
Browse latest Browse all 113

Trending Articles