簡體   English   中英

mcrypt安裝的問題

[英]problem with mcrypt installation

我已經要求系統管理員在服務器上安裝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 該目錄存在,但它沒有文件...

這是文件管理器的打印屏幕。

謝謝。

試試你的mcrypt問題:

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

這是mcrypt.ini文件位置的錯誤。

我有同樣的錯誤,我做了一個cp而不是一個MV確定但它解決了問題。

對於PHP不工作,如果你使phpmyadmin工作(即使有mcrypt錯誤),這意味着PHP正在工作(因為phpmyadmin使用PHP)。 但在你的例子中

<? echo $row['details']; ?>
改變<? <?php再試一次?

在Ubuntu 14.04上只需要做三個步驟就像sudo:

apt-get install php5-mcrypt
php5enmod mcrypt
service apache2 restart

mcrypt算法目錄必須是包含算法的目錄,而不是二進制文件 這意味着:

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

應該是這樣(假設安裝了mcrypt/usr/local/lib/libmcrypt ):

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

如果安裝libmcrypt的目錄不是上面的那個,則必須更新php.ini設置。 取自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=

如果您具有shell訪問權限,則可以嘗試使用此命令查找mcrypt安裝的lib目錄:

whereis libmcrypt

要么...

whereis mcrypt

取決於您的設置。

我有完全相同的問題。

> 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

如何在MAC OSX上安裝mcrypt:

您好,測試並使用Mac OSX El Capitan:

1.下載mcrypt: http//www.viames.it/download/elcapitan/mcrypt.so

2.放入:

/ usr / lib中/ PHP /擴展/ 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

是的,我知道我是個黑幫。

架構: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*顯示在正常root中安裝了5.3的版本:

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

但是, 5.4/opt/rh/php54被chroot

簡單地復制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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM