0

如何使用像 mcrypt 这样的 php 扩展?我的第一个想法是找到 mcrypt.php 并简单地包含它(context.Include("mcrypt.php", false);),但当然它不存在,因为它是用 C 编写的。
我正在阅读写作编译PHP 中的 PHP 扩展来自博客,但这似乎是关于创建您自己的扩展以在 .net 中使用。但考虑到这句话,我可能错了:“在 PHP 语言中实现 Phalanger 扩展。当你使用你的 PHP 库并使用 Phalanger 编译它时,结果是 DLL 像任何其他扩展一样工作”但即使仍然 phpc(phalanger php 编译器)不会据我所知编译c代码虽然我还没有尝试过。

这些是我的 php 类试图进行的调用: mcrypt_module_open mcrypt_enc_get_key_size mcrypt_enc_get_block_size

4

3 回答 3

1

mcrypt 尚未作为托管 Phalanger 扩展重新实现......如果您知道一些开源替代方案,我可以帮助移植到 Phalanger 扩展。

目前,您可以使用本机替代方案(因此您必须在 x86 中运行)。只需打开您的 .config(web.config 用于 Web 应用程序,或创建 app.config 用于桌面应用程序),然后添加以下内容

<phpNet>
    <classLibrary>
        <add assembly="php_mcrypt.mng, Version=3.0.0.0, Culture=neutral, PublicKeyToken=4ef6ed87c53048a3" section="mcrypt" />
于 2012-10-17T19:19:39.367 回答
1

Jakub Míšek 的回答绝对正确,如果这篇文章对您有帮助,请也给他投票。然而,我想简化他所说的话,因为他的建议仍然让我花了一些时间来理解他在说什么。如果你有机会阅读这篇文章,如果我对任何事情有误,也请 Jakub 纠正我。

让我知道他的答案的第一件事就是这个文件

php_mcrypt.mng

mng那是什么???但是在挖掘了他们的 [Phalanger] svn 和位于

C:\Program Files\Phalanger 3.0\Wrappers

我找到了 mcrypt 文件。另外在 php 聊天室的帮助下,我得到了关于 mng 是什么的线索,Managed Code

因此,在添加文件作为参考以及编辑 web.config 文件以包含它之后(如 Jakub 所示)

  <phpNet>
    <classLibrary>
      <add assembly="php_mcrypt.mng, Version=3.0.0.0, Culture=neutral, PublicKeyToken=4ef6ed87c53048a3" section="mcrypt" />
    </classLibrary>
    <scriptLibrary/>
  </phpNet>

这些行必须输入到 Phalanger 以在编译时加载此扩展(我认为/知道)。

之后,一切似乎都可以编译并运行良好!谢谢雅库布

于 2012-10-18T17:47:29.263 回答
-2

安装和使用 MCrypt 并不复杂。对于 *nix 用户,PHP.net在此页面中提供了信息来源。

但对于 Windows,没有太多信息。

不过也很容易。您只需从 PHP 二进制文件中复制libmcrypt.dll文件,将其保存在ext目录中并启用它:

extension=php_mcrypt.dll

注意:在 WINDOWS 环境中,PHP 扩展通常以php_命名,因此您必须重命名 DLL 或上面的 PHP.INI 行。

之后,重新启动 Apache。

但在执行此操作之前,请先检查您的 phpinfo(),因为某些软件包和/或发行版带有预编译的静态 MCrypt。

运行它并检查with-mcrypt=static和/或启用 mcrypt 支持的MCrypt 组

于 2012-10-16T20:55:01.713 回答