14

システム管理者にサーバーにmcryptをインストールするように依頼しましたが、すべて問題ないと言われています。しかし、単純なスクリプトを実行すると、これが得られます。

警告:mcrypt_get_iv_size()[function.mcrypt-get-iv-size]:モジュールの初期化に失敗しました

それはこの行から来ています:

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB);

さて、このコードから:

$algorithms = mcrypt_list_algorithms("/usr/local/bin/mcrypt");

foreach ($algorithms as $cipher) {
    echo "$cipher<br />\n";
} 

私は得る:

警告:mcrypt_list_algorithms()[function.mcrypt-list-algorithms]:モジュールディレクトリにアルゴリズムが見つかりません

これを実行すると:

$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");

foreach ($modes as $mode) {
    echo "$mode <br />\n";
}

私は得る:

警告:mcrypt_list_modes()[function.mcrypt-list-modes]:モジュールディレクトリにモードが見つかりません

ただし、このコマンドを実行すると、このコマンド

which mcrypt; mcrypt -v

生産:

/usr/local/bin/mcrypt
Mcrypt v.0.9.9 (x86_64-unknown-linux-gnu)
Linked against libmcrypt v.2.5.7
Copyright (C) 1998-2002 Nikos Mavroyanopoulos (nmav@gnutls.org)

mcryptは正しくインストール/構成されていますか?

アップデート:

これは私がしました:

whereis libmcrypt

...そして結果を得ました:

libmcrypt: /usr/local/lib/libmcrypt /usr/local/lib/libmcrypt.so /usr/local/lib/libmcrypt.la

私も変更しました:

$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");

に...

$modes = mcrypt_list_modes("/usr/local/lib/libmcrypt");
$algorithms = mcrypt_list_algorithms("/usr/local/lib/libmcrypt");

推奨どおりですが、それでもエラーが発生します。

警告:mcrypt_list_modes()[function.mcrypt-list-modes]:のモジュールディレクトリにモードが見つかりません

次に、CPanelのファイルマネージャーに移動しました/usr/local/lib/libmcrypt。ディレクトリは存在しますが、ファイルがありません...

これがファイルマネージャの印刷画面です。

ありがとう。

4

6 に答える 6

35

mcryptの問題でこれを試してください:

mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
sudo php5enmod mcrypt
sudo service apache2 restart

これは、mcrypt.ini ファイルの場所に関するバグです。

私は同じバグを抱えていました。確かにmvの代わりにcpを実行しましたが、問題は解決しました。

PHP が機能しない場合、phpmyadmin が機能する場合 (mcrypt エラーが発生しても)、PHP が機能していることを意味します (phpmyadmin は PHP を使用するため)。しかし、あなたの例では

<? echo $row['details']; ?>
に変更<?<?phpて再試行しますか?

于 2013-11-26T05:06:24.887 に答える
5

Ubuntu 14.04 では、sudo として次の 3 つの手順を実行するだけです。

apt-get install php5-mcrypt
php5enmod mcrypt
service apache2 restart
于 2014-10-15T02:12:49.053 に答える
0

私はまったく同じ問題を抱えていました。

> mcrypt -v
Mcrypt v.0.9.9 (sparc-sun-solaris2.10)
Linked against libmcrypt v.2.5.8

> mcrypt --list-hash
Supported Hash Algorithms:
crc32
md5
sha1
haval256
ripemd160
tiger
gost
[...]

> php CryptoTest.php
PHP Warning:  mcrypt_list_modes(): No modes found in module dir in [...]

これらのオプションを使用して libmcrypt を再構成および再コンパイルすることで解決されました。

./configure --prefix=$YOUR_PATH/libmcrypt --enable-dynamic-loading --disable-posix-threads

次に、あなたの php.ini で:

mcrypt.algorithms_dir=<YOUR_PATH>/libmcrypt/lib/libmcrypt
mcrypt.modes_dir=<YOUR_PATH>/libmcrypt/lib/libmcrypt
于 2012-01-24T20:23:36.700 に答える
0

mcryptアルゴリズム ディレクトリは、バイナリではなく、アルゴリズムを含むディレクトリである必要があります。これは、次のことを意味します。

$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");

代わりにこれにする必要があります(mcryptがインストールされていると仮定すると/usr/local/lib/libmcrypt):

$modes = mcrypt_list_modes("/usr/local/lib/libmcrypt");

がインストールされているディレクトリが上記のディレクトリでない場合は、 php.ini設定libmcryptを更新する必要があります。php.iniから取得:

[mcrypt]

; Directory where to load mcrypt algorithms
; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
;mcrypt.algorithms_dir=

; Directory where to load mcrypt modes
; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
;mcrypt.modes_dir=

シェル アクセス権がある場合は、次のコマンドを試して、mcrypt インストール用の lib ディレクトリを見つけることができます。

whereis libmcrypt

また...

whereis mcrypt

セットアップに応じて。

于 2011-01-26T21:22:26.183 に答える
-1

MAC OSX に mcrypt をインストールする方法:

こんにちは、Mac OSX El Capitan でテスト済みで作業中です:

1. mcrypt をダウンロード: http://www.viames.it/download/elcapitan/mcrypt.so

2. 次の場所に置きます。

/usr/lib/php/extensions/mcrypt

3.「php.ini」を変更します

/etc/php.ini

次の行を追加します。

extension = /usr/lib/php/extensions/mcrypt.so

4. 次のコマンドで「mcrypt」がロードされているかどうかを確認します。

php-m

php -m コンソールの結果

5. コンテンツを含む「phpinfo.php」を作成します。

<?php echo phpinfo(); ?>

mcrypt がリストされているかどうかを確認します。

phpinfo() は mcrypt が読み込まれることを表示するようになりました

はい、私はギャングスタであることを知っています。

于 2016-09-27T17:42:02.183 に答える
-1

アーキテクチャ: Centos 6 / Apache 2.2 / デュアル PHP インストール (5.3 および 5.4)

更新: このソリューションは、Centos 6 で Remi の RPM から PHP 5.4 を使用してモジュール mcrypt を手動でインストールする方法を説明していますが、この RPM には glibc-2.14+ が必要であるため、glibc がそれよりも古い場合、これだけでは機能しません。

私の構成では、通常のルートYum install php-mcrypt*にバージョンがインストールされていることが示されました。5.3

php-mcrypt.x86_64                    5.3.3-5.el6                                  @epel

ただし、5.4は chroot されています。/opt/rh/php54

5.3 のモジュールと構成ファイルをコピーするだけでは機能しません。モジュールが初期化に失敗したため、phpinfo() に表示されません。これは次のコマンドで確認できます

/opt/rh/php54/root/usr/bin/php  -v

私にとってうまくいった解決策は、Remi の RPM をダウンロードすることです (通常は、コメントで説明されているように、彼の Yum リポジトリを追加することで簡単にインストールできます) ( https://www.rpmfind.net/linux/RPM/remi/fedora/ 25/x86_64/php54-php-mcrypt-5.4.45-12.fc25.remi.x86_64.html )

wget ftp://fr2.rpmfind.net/linux/remi/fedora/25/remi/x86_64/php54-php-mcrypt-5.4.45-12.fc25.remi.x86_64.rpm

RPM2CPIO でファイルを抽出します。

rpm2cpio php54-php-mcrypt-5.4.45-12.fc25.remi.x86_64.rpm |cpio -idmv
./opt/remi/php54/root/etc/php.d/mcrypt.ini
./opt/remi/php54/root/usr/lib64/php/modules/mcrypt.so
98 blocks

そしてchrootフォルダにコピーします

cp ./opt/remi/php54/root/etc/php.d/mcrypt.ini /opt/rh/php54/root/etc/php.d/mcrypt.ini
cp ./opt/remi/php54/root/usr/lib64/php/modules/mcrypt.so /opt/rh/php54/root/usr/lib64/php/modules/

チェックする:

/opt/rh/php54/root/usr/bin/php  -v

また:

<html>
<body>
<?php
phpinfo();
?>
</body>
</html>
于 2016-10-30T00:46:18.947 に答える