mcrypt 和 IIS - 模块不会在 PHP 中加载
Posted
技术标签:
【中文标题】mcrypt 和 IIS - 模块不会在 PHP 中加载【英文标题】:mcrypt and IIS - module does not load in PHP 【发布时间】:2010-09-17 04:50:30 【问题描述】:我有 Windows 2003 Standard、IIS 6、php、mysql 和 amy 试图让 mcrypt 工作,以便我可以使用 phpMyAdmin。
我在 php.ini 中有未推荐的 php_mcrypt.dll,该文件位于我的扩展文件夹 (c:\php) 中。
我已将 libmcrypt.dll 下载到 c:\php、c:\php\ext、c:\windows、c:\windows\system32。我还在下一个文件中找到了该文件的第二个版本并尝试了该文件。每次更改后,我都重新启动了 IIS。
当我检查 php_info(); 时,无论我尝试什么 mcrypt 似乎都没有加载。但是没有显示错误。
还有其他版本的 php_mcrypt.dll 吗?有没有人有不需要 mcrypt 的 phpMyAdmin 版本?有没有人遇到过这个问题/有解决方案?
所有帮助将不胜感激。
非常感谢,
提姆
【问题讨论】:
当你说你已经“重新启动了 IIS”——你是指(虚拟)站点还是整个 IIS——对 PHP 配置的更改通常需要所有 IIS(最肯定是应用程序) pool(s)) 需要重启才能生效 命令行中的IISRESET 是您正在寻找@iAn 的措辞。 :) 重启 Windows 有点牵强附会 - 它不会比 IISRESET 做的更多。 【参考方案1】:我遇到了同样的问题,发现我的 libmcrypt.dll 版本已损坏,当我从网上下载一个版本时,它很好。你已经这样做了,我怀疑这有帮助吗?
【讨论】:
【参考方案2】:我们在 W2k3(x64)/IIS6/PHP5.2.17 上遇到了同样的问题。将 libmcrypt.dll 复制到 %WINDIR%\SysWOW64 和 IISRESET 解决了这个问题。
【讨论】:
【参考方案3】: 确保 php.ini 中的 extension_dir 指向正确的路径(例如 c:/php5/ext) 尝试在每次更改后重新启动 windows 而不是 IIS。 libmcrypt.dll 只需要在 c:\windows\system32 中 为确保(未)加载 mcrypt,请使用 phpinfo() 进行检查。我在加载 mcrypt 时也遇到了困难,但以上内容帮助我更接近解决方案。
【讨论】:
【参考方案4】:尝试使用 php -m 从命令行启动 php。它将显示已加载模块的列表。
【讨论】:
【参考方案5】:我在使用 Win 2k3 Server + IIS 6 + PHP 5.2.9 + mcrypt 时也遇到了一个奇怪的问题。一旦我添加了 mcrypt(或 mhash)扩展,fastcgi 就超时了。当我从 php.ini 中删除这些扩展时,我看到了我的 phpinfo() 页面,正如预期的那样。真正奇怪的是,当我从命令行运行 php -m 时,我可以看到模块已加载。
我从 XAMPP(在 php 文件夹中)获取了所有 dll,并将它们全部放入我的 PHP 安装文件夹(对我来说是 C:\Program Files\PHP)。对我的 php.ini 进行更改后
extension=php_mcrypt.dll
我完全重新启动了 IIS,而不是回收应用程序池,并且我的 phpinfo 页面按预期工作。我不知道为什么,但是 fastcgi 无法“看到”system32 文件夹中的库,我不得不将它们放在我的 php 根文件夹中。
祝你好运。
【讨论】:
【参考方案6】:就我而言,我的网站给出了错误“PHP 警告:mcrypt_decrypt()...” 我使用 IIS6 - Plesk - PHP 2.5 因此,我将 Plesk CP 中的 PHP 版本更新为 5.3,然后错误消失了。 希望这对某人有所帮助。
【讨论】:
有帮助,但这应该是评论而不是答案,因为这并没有具体解决问题。以上是关于mcrypt 和 IIS - 模块不会在 PHP 中加载的主要内容,如果未能解决你的问题,请参考以下文章
如何让 MCrypt 和 PHP 在 CentOS 上协同工作