phpenmod mcrypt 和 phpenmod mbstring 返回错误

3 php apache2 phpmyadmin

我使用的是 ubuntu16.04.1、Apache2、MySQL 和 PHP 7.0.8.1 的最小服务器环境。我通过已经installem AMP: apt-get install lamp-server^

我还通过以下方式手动安装了 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 \;
Run Code Online (Sandbox Code Playgroud)

PHPmyadmin 是自举的,但要在功能上完全使用它,AFAIK 我还需要执行以下操作:

phpenmod mcrypt
phpenmod mbstring
Run Code Online (Sandbox Code Playgroud)

然而,这些分别返回错误:

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
Run Code Online (Sandbox Code Playgroud)

我以前从未有过这些错误。这些模块对于当前版本中的 PHPmyadmin 或未通过 安装时是多余的apt-get install吗?

Geo*_*sen 12

首先安装它们:

sudo apt install php7.0-mcrypt && sudo apt install php7.0-mbstring
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令启用它们:

sudo a2enmod mcrypt
sudo a2enmod mbstring
Run Code Online (Sandbox Code Playgroud)

更新

基于广泛的研究,我相信存在一个错误,该错误会阻止您的php cliphp mcrypt一起正常工作。

来源:

无法在 Ubuntu 13.10(Nginx、PHP-FPM)中使用 PHP 扩展 Mcrypt

php 在 ubuntu 13.10 上运行不佳,并且 phpmyadmin 中缺少 mcrypt

到确认mcrypt启用Apache中请按照下列步骤操作:

  1. 创建一个php名为info.php将以下代码放入其中的文件:

    <?php echo phpinfo(); ?>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将文件放入/var/www/html或您的服务器根目录中

  3. 从浏览器访问它 say IP/info.phporlocalhost/info.php

  4. 看看out,你会发现mcrypt and mbstring是启用的

    在此处输入图片说明

    如您所见,它在 apache 中启用,但无法从 php CLI 访问,因此出现错误消息。

  5. 为了确认它的工作[因为我也有这个问题]我做了以下事情:

    • 安装了prestashop应用程序,并且由于prestashop的要求之一是php mcrypt如果mcrypt未在apache 上启用它会抛出错误并拒绝继续。

如果您的apache 信息页面将这些模块显示为已启用,则基于您的简单放置。看到的错误是php CLImcrypt存在问题的结果,该问题已被指出是一个错误。在早期版本的php 中看到,但现在出现在php 7 中


小智 5

我遇到了上述解决方案的问题,但发现了这一点:

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
Run Code Online (Sandbox Code Playgroud)

安装依赖项后,您可以使用以下命令安装 mcrypt:

sudo pecl install mcrypt-1.0.1
Run Code Online (Sandbox Code Playgroud)

从那里我需要添加:

 /etc/php/7.2/mods-available/mcrypt.ini
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

; configuration for php mcrypt module
; priority=20
extension=mcrypt.so
Run Code Online (Sandbox Code Playgroud)

然后

sudo phpenmod mcrypt
sudo systemctl restart apache2.service
Run Code Online (Sandbox Code Playgroud)