[PHP]mcrypt_module_open()でエラー”Call to undefined method”が出るとき

phpのプログラムで、mcrypt_module_open()メソッドをコールしたとき、Call to undefined method...ワーニングが出る場合があります。

この場合、pho.iniでphp_mcrypt.dllモジュールが読み込まれていない可能性があります。php.iniを確認し、extensionの指定がコメントアウトされていたらコメントを外してください。

;extension=php_mcrypt.dll



extension=php_mcrypt.dll

Windows環境で動作させる場合、PHP5.3以降ではMcryptのライブラリがphp.exeにstatic linkされているため、上記の設定は行う必要がありません(コメントアウトされた定義自体がphp.iniに存在しないです)

手元の環境のphp.exeで、本当にmcryptがstatic linkされているか不安な時は、phpinfo()で確認するとよいです。Configure Commandに --with-mcrypt=staticがあれば、リンクされているはずです(なので設定せずに実行可能です)。

また、php7.1ではmcrypt_module_open()が非推奨になっています。非推奨の理由はmcryptが古すぎるためで、代わりにOpenSSLを使用することが奨励されています。

関連記事

コメントを残す

メールアドレスが公開されることはありません。