PHP扩展的API号不同



因此,我正在尝试为我的客户开发一个php扩展。我使用SWIG来生成包装器代码,我的主代码是c++。在我成功创建扩展后,我将其加载到/ext中并重新启动web服务器进行测试。我得到的错误提到,扩展已构建与API 20090626,但PHP服务器(在我的情况下XAMPP) API是20100525。我完全理解这个错误,所以我在php源代码中打开Zend_modules.h头文件,并将API编号从20090626更改为20100525,然后我用更新的Zend_modules.h头文件构建我的扩展,现在我没有问题了。

问题是,我的客户使用不同的php服务器与不同的api是肯定的,我计划给他们一个dll(我的扩展),可以很容易地加载没有任何斗争。但现在我应该给他们一个VS2010解决方案与我的主代码(dll)动态加载。我的意思是,每个用户应该首先从自己的服务器检查PHP API,并更改Zend_modules.h头文件,构建解决方案,然后使用扩展。我需要一个解决方案,使我的扩展完全独立于API号码。

我真的很感谢你的任何建议。

我完全理解这个错误,所以我在php源代码中打开Zend_modules.h头文件,并将API编号从20090626更改为20100525

你这样做的事实告诉我,你并没有真正理解这个错误。

模块在不同的PHP主版本之间NOT兼容——Zend API编号用于确保PHP不会无意中尝试加载为不同版本构建的模块。你对PHP构建树所做的修改导致它构建的模块在任何版本上都不能正常运行。

如果您需要为多个主要版本的PHP构建模块,则需要使用相应版本的PHP运行构建。您不能混搭,也不能构建一个适用于多个版本的模块。(您也不应该建议用户修改他们的PHP构建以接受不兼容的模块。那只会让可怕的事情发生。

下面列出了几个PHP版本的API版本:
  • php 5.2: 20060613php 5.3: 20090626
  • php 5.4: 20100525php 5.5: 20120211

相关内容

  • 没有找到相关文章

最新更新