Windows Server・Apache 環境でphp.ini(PHP7.4)を編集してもOpenSSLが有効化できなかった。
原因はPHPのディレクトリにパスを通してないことでした。
システム環境変数でパスに追記すれば良いのですが
PHPのディレクトリにパスを通さない場合でも有効化する手順を記します。
①php.iniを編集
コメントアウトを外します。
extension=openssl
②-1 PHPのディレクトリにパスを通してある場合
①で動作します。
②-2 PHPのディレクトリにパスを通さない場合
何らかの事情でパスを通せない場合は以下の操作が必要です。
■PHPのディレクトリ直下から下記の2ファイルをコピーします。
libcrypto-*.dll
libssl-*.dll
上記が見つからない場合は下記の可能性があります。
libeay32.dll
ssleay32.dll
■DLLファイルをパスを通してあるディレクトリに貼り付けます。
・C:\Windows\System32でも動作しますが(標準でパスが通っているので)、システムディレクトリなので推奨しません。
・Apacheの場合はApacheのbin配下に置いても動作します。
参考
■パスが通った場所にDLLファイルを置くこと
PHP: インストール手順 Win32 ユーザーへの注意
この拡張モジュールを動作させるには、 Windows システムの PATH が通った場所に DLL ファイルが存在する必要があります。
■OpenSSLのDLLファイル名について
OpenSSL 1.1.0+ have changed library names in windows · Issue #1931 · arvidn/libtorrent · GitHub
Since version 1.1.0 OpenSSL have changed their library names from:
(バージョン 1.1.0 以降、OpenSSL はライブラリ名を変更しました)
libeay32.dll -> libcrypto.dll
ssleay32.dll -> libssl.dll