我正在处理的Web应用程序需要能够处理相同PHP扩展的两个不同版本。 (特别是Mapserver for Mapserver 5.6和MapScript for Mapserver 6.2)如何加载相同php扩展的两个版本?
在php执行开始之前,脚本不知道需要加载哪个版本。 (但每个请求只需要一个扩展名。)
我原来的计划是使用php内置的dl函数,但是我发现dl由于安全问题而被禁用。 (http://php.net/manual/en/function.dl.php)
有什么办法可以在执行过程中加载扩展吗?或者可能总是加载两者,但将它们放在不同的名称空间中,以便可以分别访问它们?
除非扩展名支持命名空间,否则你可能不能。没有机制来加载插件/模块,并将它们填入与默认不同的命名空间,例如, 'dl('v1.so',\ this \ that)'。 –
如果您不能重新编译这两个扩展,并且如果您只需加载两个用于执行某些测试的操作,就会有一个*头* *来唯一标识扩展名,并且可以使用二进制编辑器更改扩展名显示的字母在内部,也可以将函数名称改为1个字母(并且也可以在任何地方重命名文件名)。免责声明:没有尝试自己。 –