注: MCryptのサポートに依存するライブラリは何年も更新されていないため、MCryptはデータを暗号化する実行可能または安全な方法とは見なされません。さらに、MCryptはPHP 5で非推奨になり、PHP 7で完全に削除されました。MCryptを実行するコードがある場合は、リファクタリングして最新の暗号化ライブラリを使用してください。
以下のコードを実行すると、このエラーメッセージ:(Call to undefined function mcrypt_encrypt() )
が表示される理由を誰もが知っていますか?
このコードが機能する前に行う必要があるPHPの設定がいくつか欠落しているでしょうか?
$key = 'password to (en/de)crypt';
$string = 'string to be encrypted';
$test = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key),
$string, MCRYPT_MODE_CBC, md5(md5($key)));
PHPバージョン5.2.8で機能していたのは、php.ini
を開き、php_mcrypt.dll
を削除して;
拡張を許可することでした。
;extension=php_mcrypt.dll
からextension=php_mcrypt.dll
最近、ubuntu 14.04に更新した場合、この問題の修正は次のとおりです。
$ Sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
$ Sudo php5enmod mcrypt
$ Sudo service Apache2 restart
窓用
;extension=php_mcrypt.dll to extension=php_mcrypt.dll
then restart your Apache server
Redhatの場合
Sudo yum install php55-mcrypt //if php5.5
Sudo yum install php-mcrypt //if less than 5.4
Sudo service httpd restart //if Apache 2.4
Sudo /etc/init.d/httpd restart //if Apache 2.2 or less
Ubuntuの場合
Sudo apt-get install php5-mcrypt
Sudo service Apache2 restart //if server not reloaded automatically
まだ動作していません?
Sudo php5enmod mcrypt && SudoサービスApache2の再起動
Mcryptライブラリがインストールされていません。
詳細については、 http://www.php.net/manual/en/mcrypt.setup.php を参照してください。
共有ホスティングを使用している場合は、プロバイダーにインストールを依頼できます。
OSXでは、homebrewを使用してmcryptを簡単にインストールできます。
brew install php54-mcrypt --without-homebrew-php
次に、この行を/etc/php.iniに追加します。
extension="/usr/local/Cellar/php54-mcrypt/5.4.24/mcrypt.so"
PHP 7.2以降を使用している場合:
この関数はPHP 7.1.0で廃止され、PHP 7.2.0で削除されました。
ソース: http://php.net/manual/en/function.mcrypt-encrypt.php
そのため、phpコードを置き換えて、mcryptを使用せずに解決策を見つける必要があります。
あるいは、PHP 7.2.0でmcryptを使用することもできますが、PHP拡張コミュニティライブラリとしてインストールする必要があります。 ( https://pecl.php.net/ )
Debian/Ubuntu Linuxディストリビューションの場合:
Sudo apt-get -y install gcc make autoconf libc-dev pkg-config
Sudo apt-get -y install php7.2-dev
Sudo apt-get -y install libmcrypt-dev
その後:
Sudo pecl install mcrypt-1.0.1
ソース: https://www.techrepublic.com/article/how-to-install-mcrypt-for-php-7-2/
Ubuntuの下で私は問題があり、それを解決しました
$ Sudo apt-get install php5-mcrypt
$ Sudo service Apache2 reload
Ubuntu 14.10の場合:
モジュールmcryptのインストール
Sudo apt install php5-mcrypt
Apache2でモジュールmcryptを有効にします
Sudo a2enmod mcrypt
モジュール構成のリロード
Sudo service Apache2 restart
Linux Mint 17.1 Rebeccaで-未定義関数mcrypt_create_ivの呼び出し...
Php.iniに次の行を追加して解決しました
extension=mcrypt.so
その後
service Apache2 restart
それを解決しました...
PHP 7不足しているmcryptのバージョンにも同じ問題がありました。
これは私のために働いた。
Sudo apt-get update
Sudo apt-get install mcrypt php7.0-mcrypt
Sudo apt-get upgrade
Sudo service Apache2 restart (if needed)
Ubuntu 14.04を使用している場合、この問題の修正は次のとおりです。
最初にphp5-mcrypが既にインストールされていることを確認しますapt-get install php5-mcrypt
インストールされている場合は、この2つのコマンドを実行するか、この2つのコマンドをインストールして実行します
$ Sudo php5enmod mcrypt
$ Sudo service Apache2 restart
うまくいくことを願っています。
Php5-fpmを使用している場合は、mcryptをインストールした後、忘れずに再起動してください。
サービスphp5-fpm restart
Mcryptは有効になっていますか? phpinfo()
を使用して、そうであるかどうかを確認できます。
Debian linuxを使用していると仮定します(Linuxミント12を使用していますが、問題はUbuntu 12.04.1 LTSサーバーにありました)。
@dkaminsのアドバイスを受け、php5インストールでmcryptがインストールされ、アクティブになっていることを確認することをお勧めします。 「Sudo apt-get install php5-mcrypt」を使用してインストールします。以下のメモ。
PHPバージョンPHP Version 5.3.10-1ubuntu3.4
を使用して、Webサーバー上にテストファイルを作成することで行う、@ John Condeの提案に従ってphpinfo()を開く場合(たとえば、コンテンツだけでステータスページtestphp.phpを作成する「」ブラウザ経由でサーバー上のどこからでもアクセス可能)
ブラウザで開いたときに、ステータスページに有効または無効のステータスが存在しないことがわかりました。その後、@ Anthony Forloneyが言及したphp.iniファイルを開いたときに、;extension=php_mcrypt.dll to extension=php_mcrypt.dll
のコメントを外すことを考えています
私はそれを前後に切り替えてApacheを再起動しました(Apache2を実行しているので、セットアップでSudo /etc/init.d/Apache2 restart
を使用して、またはそのディレクトリにいるときにSudo restart
と思います)変更して変更せずに再起動できますが、すべてがうまくいきません。 @dkaminsのアドバイスを受けて、「Sudo apt-get install php5-mcrypt」でパッケージをインストールし、上記のようにApacheを再起動しました。その後、エラーがなくなり、アプリケーションは正常に機能しました。
もう1つ:ApacheなどのWebサーバー経由でPHPを提供している場合は、Webサーバーを再起動してください。これにより、存在する可能性のあるPHPモジュールが「リセット」され、新しい構成がアクティブになります。
私にとっては、mcryptをアンインストールするのに役立ちました:
Sudo apt-get purge php5-mcrypt
単純に再インストールします。
Sudo apt-get install php5-mcrypt
上記のようにApacheを再起動することを忘れないでください。
私の場合は(なぜphp55をプロビジョニングしたvmを使用して)これがなぜ、どのように異なっていたのかわかりませんが、おそらく他の人の助けになるでしょう。また、xcacheのような他のモジュールでこの問題が発生しました...
linuxベース(Fedora)の場合
yum -y install php-mcrypt
PHP.iniに「extension = mcrypt.so」を追加して、モジュールを有効にします。 (/etc/php.ini)
systemctl restart httpd.service
できた!
Php5-mcryptを確認してインストールします。
Sudo apt-get install php5-mcrypt