web-dev-qa-db-ja.com

phpenmod mcryptおよびphpenmod mbstringがエラーを返す

Ubuntu16.04.1、Apache2、MySQL、およびPHP 7.0.8.1の最小限のサーバー環境を使用しています。 apt-get install lamp-server^経由でAMPをインストールしました。

また、PHPmyadminを手動でインストールしました:

cd /var/www/html
wget https://files.phpmyadmin.net/phpMyAdmin/4.6.5.2/phpMyAdmin-4.6.5.2-all-languages.Zip
find ./ -type f -name '*phpMyAdmin*.Zip' -exec unzip {} \; # We can also do unzip \*phpMyAdmin*.Zip ...
find ./ -type d -name 'phpMyAdmin-*' -exec mv {} phpmyadmin \;

PHPmyadminはブートストラップされていますが、完全に機能するためには、以下を行う必要があります。

phpenmod mcrypt
phpenmod mbstring

しかし、これらはそれぞれエラーを返します:

Module mcrypt ini file doesn't exist under /etc/php/7.0/mods-available

Module mbstring ini file doesn't exist under /etc/php/7.0/mods-available

以前にこれらのエラーが発生したことはありません。これらのモジュールは、現在のリリースのPHPmyadminで冗長ですか、またはapt-get installを介してインストールされていない場合ですか?

2
JohnDoea

最初にインストールします:

Sudo apt install php7.0-mcrypt && Sudo apt install php7.0-mbstring

次に、それらを有効にします:

Sudo a2enmod mcrypt
Sudo a2enmod mbstring

更新

広範な研究に基づいて、bugが存在し、php cliphp mcrypt

ソース:

buntu 13.10(Nginx、PHP-FPM)ではPHP拡張Mcryptを使用できません

phpはubuntu 13.10でうまく機能せず、phpmyadminにmcryptがありません

Apacheでmcryptenabledであることを確認するには、次の手順を実行します。

  1. info.phpというphpファイルを作成し、次のコードを挿入します。

    <?php echo phpinfo(); ?>
    
  2. ファイルを/var/www/htmlまたはserver rootに配置します

  3. たとえばIP/info.phpまたはlocalhost/info.phpのブラウザからアクセスします

  4. 外を見ると、mcrypt and mbstringが有効になっていることがわかります。

    enter image description here

    ご覧のとおり、Apacheで有効になっていますが、php CLIからアクセスできないため、エラーメッセージが表示されます。

  5. その動作を確認するために[この問題もあるので]私は次のことをしました:

    • インストールされたprestashopアプリケーション、およびprestashopのrequirementsの1つはphp mcryptApachemcryptが有効になっていない場合、エラーをスローして続行を拒否します。

あなたのApache情報ページにこれらのモジュールが有効になっていると表示される場合、単純なputが有効になります。表示されるエラーは、php CLIがバグであることが指摘されているmcryptに問題がある結果です。 phpの以前のバージョンで見られましたが、現在はphp 7に存在します

11
George Udosen

上記のソリューションに問題がありましたが、これが見つかりました:

https://www.techrepublic.com/article/how-to-install-mcrypt-for-php-7-2/

基本的に、自分でビルドします。

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

依存関係がインストールされたら、次のコマンドでmcryptをインストールできます。

Sudo pecl install mcrypt-1.0.1

そこから追加する必要がありました:

 /etc/php/7.2/mods-available/mcrypt.ini

次のようになりました:

; configuration for php mcrypt module
; priority=20
extension=mcrypt.so

それから

Sudo phpenmod mcrypt
Sudo systemctl restart Apache2.service
3
theINtoy

両方がインストールされてエラーが解決しない場合は、mods-availableのiniファイルへのシンボリックリンクを作成してみてください

方法は次のとおりです。

Sudo ln -s /etc/php7/conf.d/mcrypt.ini /etc/php/7.0/mods-available/mcrypt.ini

Sudo ln -s /etc/php7/conf.d/mbstring.ini /etc/php/7.0/mods-available/mbstring.ini
2