使用 mcrypt 启用或编译 PHP?

Posted

技术标签:

【中文标题】使用 mcrypt 启用或编译 PHP?【英文标题】:Enabling or Compiling PHP with mcrypt? 【发布时间】:2012-01-05 07:45:42 【问题描述】:

phpMyAdmin 声明缺少 mcrypt 扩展。我确实有 php_mcrypt.dll(在 ext 文件夹中)和 libmcrypt.dll(在 PHP 根文件夹中),我确实启用了

extension=php_mcrypt.dll

在 php.ini 文件中,尽管 phpMyAdmin 仍然声明它缺少它。

现在我想知道,它是启用还是未启用? documentation 声明必须用 mcrypt 编译 PHP,具体是怎么做的?

我确实下载了 libmcrypt-2.5.8,但没有看到任何可以安装的文件。

【问题讨论】:

您遗漏了两个重要信息:您的 PHP 版本以及您最初安装它的方式(*.msi 安装程序、ZIP 包、从源代码编译...)。 对不起,我什至没有注意到。我的 PHP 版本是 5.3.8,我确实选择了 msi 安装,我也只是看了一下,在这个版本中,安装选项中不包含 mcrypt 扩展。 【参考方案1】:

在 *.MSI 安装程序中包含的 PHP/5.3.8 二进制文件中,您应该已经拥有 Mcrypt 扩展,因为它捆绑了您甚至无法删除的扩展的静态版本(因为没有单独的 DLL)。如果你的ext 目录中有一个php_mcrypt.dll 文件,你的PHP 根目录中有一个libmcrypt.dll 文件,并且你的php.ini 文件中有一个extension=php_mcrypt.dll 行,那么它可能是其他旧版本的剩余部分。

phpinfo() 输出中,您应该有以下信息:

构建日期:2011 年 8 月 23 日 11:47:20编译器:MSVC9 (Visual C++ 2008) 架构:x86

配置命令cscript /nologo configure.js “--enable-snapshot-build” “--disable-isapi” “--enable-debug-pack” “--disable-isapi” “--without-mssql” “--without-pdo-mssql” “--无 pi3web” “--with-pdo-oci=D:\php-sdk\oracle\instantclient10\sdk,shared” “--with-oci8=D:\php-sdk\oracle\instantclient10\sdk,shared” “--with-oci8-11g=D:\php-sdk\oracle\instantclient11\sdk,shared” “--enable-object-out-dir=../obj/” “--enable-com-dotnet” "--with-mcrypt=static" "--disable-static-analyze"

注册流过滤器convert.iconv.mcrypt.、mdecrypt.*、 string.rot13,string.toupper,string.tolower,string.strip_tags, 转换。,消费,dechunk,zlib。

...以及标题为 mycrypt 的完整表格。

我的建议是备份您的设置,从控制面板卸载 PHP,删除 PHP 目录中剩余的内容并执行全新安装。

【讨论】:

我确实已经进行了全新安装,而不是过度安装。是的,我确实有文件 php_mcrypt.dll 和文件 libmcrypt.dll,我还在 php.ini 文件中启用了扩展。所以从你的帖子来看它应该已经工作了?虽然我在 phpinfo 页面中没有任何关于 mcrypt 的说明。我还查看了当前的 msi 安装,甚至无法选择扩展。我不确定整个重新安装是否会有所帮助。 奇怪...我在自己的计算机上从php-5.3.8-Win32-VC9-x86.msi 安装,mcrypt 在这里绝对是静态的(即没有 DLL)。您至少可以从phpinfo() 发布您的“构建日期”和“配置命令”吗? 我安装了 XAMPP,但无法单独安装,但感谢所有帮助。稍后我可能会再次尝试单独安装。 @Carpet - 我倾向于发现 XAMPP 更加困难,因为您必须为所有内容编辑文本文件,并且文件总是有多个副本,但如果它适合您,那就没问题了。但是,我仍然对您的原始设置感到好奇。太糟糕了,我们从未设法看到请求的信息。【参考方案2】:

试试这个:http://www.landpro.com.au/Windows_7_Install_mcrypt_extension_and_libmcrypt_dll_for_PHP.php

【讨论】:

据我所知,PHP 5.3 不再包含 mcrypt 作为可用扩展,因为我只是看了看。【参考方案3】:

您可以通过查看phpinfo函数的输出来检查该库是否已安装/启用

创建一个名为 phpinfo.php 的文件添加以下内容。

<?php

echo phpinfo();

?>

检查浏览器的输出。

要编译支持 mcrypt 的 php,您必须在从源代码安装 php 时传递选项 --with-mcrypt(不确定这是否正确,但您可以通过发出 ./configure --help 命令找出)。

然后重启你的 apache 服务器。

现在通过检查 phpinfo 的输出来确认。

更新:

我对 windows 中的 php 没有真正的经验。请试试这个link。

干杯

【讨论】:

我的问题是它到底是如何完成的,我并不是真正的命令行破解者,我确实找到了教程,但主要是针对 Linux,我如何在 Windows 中使用命令提示符实现相同的功能?我确实知道如何安装某些文件,但我不知道如何“编译”。

以上是关于使用 mcrypt 启用或编译 PHP?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Mac OSX 10.9 上的 php 中启用 mcrypt?

PHP编译安装报错: mcrypt.h not found. Please reinstall libmcrypt.

PHP编译安装报错:configure: error: mcrypt.h not found. Please reinstall libmcrypt

解决php编译报错configure: error: mcrypt.h not found. Please reinstall libmcrypt.

在 PHP 安装上启用 Mcrypt

启用 Mcrypt 的 PHP 7.2 上的 Laravel 4.2 仍然显示“需要 Mcrypt PHP 扩展”。在浏览器上