使用Delphi 2010和php4Delphi编写PHP扩展

Lac*_*anG 5 php delphi iis-7 php-extension php4delphi

首先这是关于php4Delphi而不是RadPHP(以前的Delphi For 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文件中看到以下错误.

[15-Jun-2011 17:58:42] PHP警告:PHP启动:无法加载动态库'C:\ Program Files(x86)\ PHP\ext\delphi_math.dll' - 动态链接库(DLL)初始化例行失败.在第0行的未知中

我已经解决了PHP的初始问题,没有找到我的扩展,因此它不是路径样式问题.

我认为php4Delphi 7.2可能不支持最新的PHP 5.3.6.有谁有这个配置为他们工作?

Per*_*nyk 6

PHP尝试在内部加载模块并失败,你是对的.

问题不在于搜索路径,而在于使用php4delphi的非线程安全版本的php.当php加载扩展时,它会从扩展dll接收一些回调函数的列表,并使用它与dll进行通信.用于线程安全而不是线程安全版本的php的回调函数的参数列表是不同的.

php4delphi是为php的线程安全模型而制作的.您可以在此处阅读TS和NTS版本之间的区别:IIS Aid.在这种特殊情况下,如果可能的话,我建议将非线程安全的PHP更改为线程安全的PHP.

如果需要使用NTS PHP,那么必须调整php4delphi的源代码,我认为在这种情况下需要进行大量更改.