web-dev-qa-db-ja.com

致命的エラー:未定義関数mcrypt_encrypt()の呼び出し

注: 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)));
62
Jin Yong

PHPバージョン5.2.8で機能していたのは、php.iniを開き、php_mcrypt.dllを削除して;拡張を許可することでした。

;extension=php_mcrypt.dllからextension=php_mcrypt.dll

33

最近、ubuntu 14.04に更新した場合、この問題の修正は次のとおりです。

$ Sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
$ Sudo php5enmod mcrypt
$ Sudo service Apache2 restart
89
flor

窓用

;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の再起動

28
Sabbir

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"
18
dkamins

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/

13
Fabian Thommen

Ubuntuの下で私は問題があり、それを解決しました

$ Sudo apt-get install php5-mcrypt
$ Sudo service Apache2 reload
11

Ubuntu 14.10の場合:

モジュールmcryptのインストール

Sudo apt install php5-mcrypt

Apache2でモジュールmcryptを有効にします

Sudo a2enmod mcrypt

モジュール構成のリロード

Sudo service Apache2 restart
7
alphayax

Linux Mint 17.1 Rebeccaで-未定義関数mcrypt_create_ivの呼び出し...

Php.iniに次の行を追加して解決しました

extension=mcrypt.so

その後

service Apache2 restart

それを解決しました...

5
Phil Lawlor

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)
4

Ubuntu 14.04を使用している場合、この問題の修正は次のとおりです。

最初にphp5-mcrypが既にインストールされていることを確認しますapt-get install php5-mcrypt

インストールされている場合は、この2つのコマンドを実行するか、この2つのコマンドをインストールして実行します

$ Sudo php5enmod mcrypt
$ Sudo service Apache2 restart

うまくいくことを願っています。

3
Rajesh Jai

Php5-fpmを使用している場合は、mcryptをインストールした後、忘れずに再起動してください。

サービスphp5-fpm restart

3
nicky

Mcryptは有効になっていますか? phpinfo() を使用して、そうであるかどうかを確認できます。

3
John Conde

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を再起動しました。その後、エラーがなくなり、アプリケーションは正常に機能しました。

3
beiping_troop

もう1つ:ApacheなどのWebサーバー経由でPHPを提供している場合は、Webサーバーを再起動してください。これにより、存在する可能性のあるPHPモジュールが「リセット」され、新しい構成がアクティブになります。

3
Mei

私にとっては、mcryptをアンインストールするのに役立ちました:

Sudo apt-get purge php5-mcrypt

単純に再インストールします。

Sudo apt-get install php5-mcrypt

上記のようにApacheを再起動することを忘れないでください。

私の場合は(なぜphp55をプロビジョニングしたvmを使用して)これがなぜ、どのように異なっていたのかわかりませんが、おそらく他の人の助けになるでしょう。また、xcacheのような他のモジュールでこの問題が発生しました...

1
Heisoka

linuxベース(Fedora)の場合

yum -y install php-mcrypt

PHP.iniに「extension = mcrypt.so」を追加して、モジュールを有効にします。 (/etc/php.ini)

systemctl restart httpd.service

できた!

1

Php5-mcryptを確認してインストールします。

Sudo apt-get install php5-mcrypt
0
Fabricio