微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Delphi 2010和php4Delphi编写PHP扩展

如何解决使用Delphi 2010和php4Delphi编写PHP扩展

|| 首先,这是关于PHP4Delphi而不是RadPHP(以前是PHP的Delphi)。 使用 德尔福2010 PHP 5.3.6(VC9,NTS) PHP4Delphi 7.2(与VC9指令一起编译) Windows Server 2008 R2 IIS 7 尝试在IIS / PHP服务器上运行PHP4Delphi delphi_math.dll示例扩展名时,我在C:\\ Windows \\ Temp \\ PHP-errors.log文件中看到以下错误。   [2011年6月15日17:58:42] PHP警告:   PHP启动:无法动态加载   库\'C:\\ Program文件   (x86)\\ PHP \\ ext \\ delphi_math.dll \'-   动态链接库(DLL)   初始化例程失败。在   0行未知 我已经解决PHP最初的问题,找不到扩展名,所以它不是路径样式问题。 我认为PHP4Delphi 7.2可能不支持最新的PHP 5.3.6。有没有人为此配置工作?     

解决方法

        PHP尝试在内部加载模块,但失败了,您是对的。 问题不在于搜索路径,而是在于将非线程安全版本的php与php4delphi结合使用。当php加载扩展名时,它将从扩展名dll接收一些回调函数的列表,并将其用于与dll通信。线程安全版本和非线程安全版本php的回调函数的参数列表不同。 php4delphi是为php的线程安全模型制作的。您可以在此处阅读TS和NTS版本之间的区别:IIS Aid。在这种特殊情况下,如果可能的话,我建议将非线程安全的PHP更改为线程安全的PHP。 如果需要使用NTS PHP,则必须修改php4delphi的源代码,我认为在这种情况下需要进行很多更改。     ,        我只是用PHP 5.3.6对php4delphi 7.2进行了测试,但是线程安全版本和扩展已按预期加载。我认为,仅当您从命令行使用php.exe运行脚本时才可以使用NTS版本,而使用IIS时则不能。 无论如何,我还将使用NTS版本进行测试,并让您知道结果。     ,        在我看来,PHP本身(而非delphiphp)试图在内部加载模块,但失败了。 可能是它在PATH中搜索loadlibrary()的DLL,但是找到了64位DLL,而不是32位DLL。最好先在32位Windows系统上尝试此设置。 P.s.我显然从“程序文件(x86)”获得的64位系统指示     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。