使用Delphi2010和php4Delphi编写PHP扩展
首先,这是关于not(以前是delphiforphp) 使用使用Delphi2010和php4Delphi编写PHP扩展,php,delphi,iis-7,php-extension,php4delphi,Php,Delphi,Iis 7,Php Extension,Php4delphi,首先,这是关于not(以前是delphiforphp) 使用 德尔福2010 PHP 5.3.6(VC9,NTS) php4Delphi 7.2(使用VC9指令编译) Windows Server 2008 R2 IIS 7 尝试在IIS/PHP服务器上运行php4Delphi\u math.dll示例扩展时,我在C:\Windows\Temp\PHP-errors.log文件中看到以下错误 [15-Jun-2011 17:58:42]PHP警告: PHP启动:无法加载动态 库'C:\程序文
- 德尔福2010
- PHP 5.3.6(VC9,NTS)
- php4Delphi 7.2(使用VC9指令编译)
- Windows Server 2008 R2
- IIS 7
我认为PHP4Delphi7.2可能不支持最新的PHP5.3.6。有人使用过这种配置吗?我刚刚用PHP5.3.6对php4delphi 7.2进行了测试,但是线程安全版本和扩展按预期加载。我认为只有在从命令行使用php.exe运行脚本时,才能使用NTS版本,而不是在使用IIS时。
无论如何,我也会用NTS版本做测试,并让你知道结果 在我看来,PHP本身(而不是delphiphp)试图在内部加载模块,但失败了 可能是它在loadlibrary()的路径中搜索DLL,但找到的是64位DLL而不是32位DLL。最好先在32位Windows系统上尝试此设置
另外,我从“program files(x86)”中得到的64位系统指示显然PHP试图在内部加载模块,但失败了,你是对的 问题不在于搜索路径,而在于使用php4delphi的非线程安全版本的php。当php加载扩展时,它从扩展dll接收一些回调函数的列表,并使用它与dll通信。对于线程安全和非线程安全版本的php,回调函数的参数列表是不同的 php4delphi是为php的线程安全模型而设计的。您可以在此处阅读TS和NTS版本之间的区别:。在这种情况下,如果可能的话,我建议将非线程安全的PHP更改为线程安全的PHP
如果需要使用NTS PHP,那么必须修改php4delphi的源代码,我认为在这种情况下需要做很多更改 感谢您查看有关TS/NTS版本的链接。我错误地认为NTS是传统的PHP绑定,TS是新产品。现在我知道我已经向后了,切换到TS PHP版本不会有问题。路径问题是我的第一个问题,但是我通过将PHP\ext目录添加到系统路径(并重新启动)解决了这个问题。然而,这是一个不同的问题。无论如何,谢谢你抽出时间。