Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将mcrypt与phalanger一起使用_Php_Asp.net_Phalanger - Fatal编程技术网

Php 将mcrypt与phalanger一起使用

Php 将mcrypt与phalanger一起使用,php,asp.net,phalanger,Php,Asp.net,Phalanger,如何使用像mcrypt这样的php扩展?我的第一个想法是找到mcrypt.php并简单地包含它(context.include(“mcrypt.php”,false);),但当然这并不存在,因为它是用C编写的。 我在读博客上的文章,但这似乎是关于创建自己的扩展以在.net中使用。但考虑到这样一句话,我可能错了:“在PHP语言中实现Phalanger扩展。当您使用Phalanger编译PHP库时,结果是DLL与任何其他扩展一样工作。” 但就我所知,即使phpc(phalanger php编译器)也

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

以下是我的php类试图进行的调用: mcrypt_模块_打开 mcrypt_enc_get_key_尺寸
mcrypt_enc_get_block_size

安装和使用mcrypt并不复杂。对于*nix用户,PHP.net提供了一个信息源

但是对于Windows,没有太多的信息

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

extension=php_mcrypt.dll
注意:在WINDOWS环境中,PHP扩展通常被命名为PHP\uu,因此您必须重命名上面的DLL或PHP.INI行

之后,重新启动Apache

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


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

mcrypt尚未作为托管扩展重新实现。。。如果您知道一些开源替代方案,我可以帮助您移植到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" />

Jakub Míšek的答案绝对正确,如果这篇文章对你有帮助,请也投票支持他。然而,我想简化他说的话,因为他的建议仍然花了我一些时间来理解他说的话。还有,如果你有机会读到这篇文章,请告诉我我做错了什么

他回答我的第一件事就是这个文件

php_mcrypt.mng

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

C:\Program Files\Phalanger 3.0\Wrappers

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

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


这些行必须输入到Phalanger中,以便在编译时加载此扩展(我想/知道)


在这之后,一切似乎都编译和运行良好!谢谢Jakub

。NET有自己的一套加密库。你不能使用这些吗?尽量不使用,我尝试使用的php类是由供应商提供的。因此,我试图保持这些完整,并有我的前端asp.net。再加上了解这件事很有趣。最后如果做不到,那就是我必须做的,但这不是我想要做的。我在.net环境中使用phalanger在运行时编译php脚本。与在Apache甚至iI这样的服务器上使用php完全不同。这不是您在第一个主题中所说的。你知道如何使用,我给你指出了PHP手册。你问过如何编译,我告诉过你通常不需要它。我为你的解释提供了帮助。我的帮助是不好的,考虑修改你的解释和你的标签。你不知道这是什么并不意味着是我的错。我没有投你反对票。我只是指出你的解释不是我需要的汉克斯,这最终使我达到了我需要去的地方。如果您想了解更多详细信息,请阅读下面的答案。我会将此标记为答案,但其中有一些步骤遗漏了,我认为myn对未来的读者来说可能更容易。对。只是为了澄清.mng文件;Phalanger完全使用C#(托管代码)-仍然需要它来支持一些使用C语言(本机代码)的遗留PHP扩展。Phalanger提供了一种机制,可以围绕本机代码生成托管代码(.mng)。这样,在配置Phalanger时,实际上使用的是该.mng文件,该文件在内部将调用传递给本机PHP扩展名。
  <phpNet>
    <classLibrary>
      <add assembly="php_mcrypt.mng, Version=3.0.0.0, Culture=neutral, PublicKeyToken=4ef6ed87c53048a3" section="mcrypt" />
    </classLibrary>
    <scriptLibrary/>
  </phpNet>