书写用Delphi 2010和php4Delphi PHP扩展

问题描述 投票:5回答:3

首先这是关于php4DelphiRadPHP(原德尔福对于PHP)。

运用

  • 德尔福2010
  • PHP 5.3.6(VC9,NTS)
  • php4Delphi 7.2(编译VC9指令)
  • 在Windows Server 2008 R2
  • IIS 7

当试图运行php4Delphi的IIS / PHP的服务器我看到下面的错误在C上delphi_math.dll例如扩展:\ WINDOWS \ TEMP \ PHP-errors.log文件。

[15月2011年十七时58分42秒] PHP的警告:PHP启动:无法加载动态库 'C:\ Program Files文件(x86)的\ PHP \分机\ delphi_math.dll' - 一个动态链接库(DLL)初始化例程失败。在上线0未知

我已经解决了PHP的初始问题没有找到我的扩展,所以它不是一个路径的风格问题。

我在想,php4Delphi 7.2可能不支持最新的PHP 5.3.6。有没有人有这种配置为他们的工作?

php delphi iis-7 php-extension php4delphi
3个回答
6
投票

PHP将试图在内部加载模块和失败,你是对的。

这个问题是不是在搜索路径,但在的使用不是线程安全版本的PHP与php4delphi。当PHP加载扩展它接收来自扩展DLL的一些回调函数列表,并使用它与DLL通信。对于线程安全的回调函数的参数,而不是名单线程安全版本的PHP是不同的。

php4delphi是为PHP的线程安全模型进行。你可以阅读什么是TS和NTS在此版本之间的区别:IIS Aid。在这种特殊情况下,我会建议改变不是线程安全的PHP线程安全的PHP,如果可能的话。

如果NTS PHP的使用是必须的,那么php4delphi的源代码必须进行调整,我认为在这种情况下,需要一个很大的变化。


2
投票

我只是做了php4delphi 7.2的测试用PHP 5.3.6,但如预期的线程安全版本和扩展装载。我认为,只有当你使用命令行的php.exe,而不是当您使用IIS运行脚本,你可以使用NTS版本。无论如何,我会做NTS版本的测试,以及让你知道结果。


0
投票

对我来说,它看起来像PHP本身(而不是delphiphp)试图在内部加载模块和失败。

这可能是因为它在PATH搜索的DLL给LoadLibrary(),但发现64位的DLL,而不是32位的DLL。最好先尝试在32位Windows系统上此设置。

附: 64位系统的指示,我从拿到“程序文件(x86)的”明显

© www.soinside.com 2019 - 2024. All rights reserved.