簡體   English   中英

PHP 警告:模塊“mcrypt”已加載

[英]PHP warning : Module 'mcrypt' already loaded

當我用 PHP 運行命令時,它顯示一個錯誤。 例如,當我運行php -v來查看我的 PHP 版本時,它會向我顯示一個錯誤,然后是有關 PHP 的信息:

模塊“mcrypt”已在第 0 行的 Unknown 中加載

zied@ubuntu:~$ php -v

PHP Warning:  Module 'mcrypt' already loaded in Unknown on line 0

PHP 5.4.25-1+sury.org~quantal+2 (cli) (built: Feb 12 2014 11:11:30) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

您的php.ini包含以下兩行或更多行:

extension=mcrypt.so

除一個之外的所有刪除。

php.ini通常位於/etc/php.ini/etc/php5/php.ini 有時包含額外的 .ini 文件,您可以通過以下方式查看所有文件:

$ php -i | grep .ini\$
Loaded Configuration File => /usr/local/etc/php.ini
Additional .ini files parsed => /usr/local/etc/php/extensions.ini
user_ini.filename => .user.ini => .user.ini

有時這會發生在php-fpm ,有趣的是,控制台php不會同時使用相同的 .ini 文件集,證明mcrypt實際上沒有被引用兩次。

事實證明, php-fpm有一組默認的內置模塊,它試圖加載,至少在 Linux 上是這樣(因為在 FreeBSD 上無法重現)。 mcrypt在這個列表中,所以當用戶在它的/etc/php.d目錄中有一個額外的 .ini 文件時, mcrypt似乎被加載了兩次。

一個苛刻的解決方法是在開始時將-n開關添加到 php-fpm,將pnp.ini復制到php-fpm.ini ,將所有模塊包含到生成的php-fpm.ini除了 mcrypt並添加一個額外的開關指向正確的 ini 文件,所以整個添加看起來像: -n -c /etc/php-fpm.ini

這樣運行php-fpm就不會抱怨了。

我在這里寫這個,因為這是搜索引擎中關於mcrypt問題的最常引用的帖子。 我意識到源問題是關於控制台 php。

更新:我正在使用此解決方法,但它很糟糕。 前段時間我已經弄清楚為什么會發生這種情況。 我會花更多的詞來描述這個,但這可能很無聊,因為這將描述某種類型的失敗。 因此,在我的情況下,這個問題是由以下事實引起的,即我使用的是自己制作的自定義 php 版本,並且偶爾我將mcrypt添加到內置靜態模塊列表中。 然后我再次將它添加為內置模塊,因此它被加載了兩次 當在配置腳本的模塊列表中引用mcrypt並且未將其列為共享時,自定義構建會發生這種情況(規范的這一部分很容易找到,因為%configure \\在規范中只提到一次) . 就我而言,解決方案是從配置部分完全刪除mcrypt ,並將其添加到build-cgibuild-ztscli階段。 有人可能會問“fpm 階段呢?” - 這是一個很好的問題,但事實證明, fpm sapi 本身是用最少的模塊構建的,並使用通用的共享模塊。

我遇到了同樣的問題,這是由於使用./configure --with-mcrypt選項從源代碼構建 PHP。 似乎如果 PHP 是使用--with-mcrypt標志構建的,那么就不需要在php.ini指定extension=mcrypt.so 這樣做會導致上述警告。

打開php.ini,找到extension=mcrypt.so

通過在名稱擴展;extension=mcrypt.so前添加分號來注釋它;extension=mcrypt.so

暫無
暫無

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

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