如何修复PHP模块线程安全/非线程安全不匹配?

时间:2010-07-17 14:10:07

标签: php winapi php-extension

这不在错误日志中:

PHP Warning: PHP Startup: BOPEE Extension: Unable to initialize module
Module compiled with build ID=API20090626,TS,VC9
PHP    compiled with build ID=API20090626,NTS,VC9
These options need to match
 in Unknown on line 0

PHP Warning:  PHP Startup: CustomExt Module: Unable to initialize module
Module compiled with build ID=API20090626,TS,VC9
PHP    compiled with build ID=API20090626,NTS,VC9
These options need to match
 in Unknown on line 0

我如何获得PHP的非线程安全源?我在windows.php.net/download上找到的唯一下载链接是http://windows.php.net/downloads/releases/php-5.3.2-src.zip,这似乎是线程安全的代码---或者是否有某种方式告诉源它实际上是非线程安全的?

我已尝试将--disable-zts放在configure.bat的命令行上,但虽然这对configure.bat的输出有很好的影响,但它似乎不会使源代码更少线程安全

1 个答案:

答案 0 :(得分:6)

在上面的例子中,PHP本身是非线程安全的(NTS),但模块是线程安全的(TS)。该模块是线程安全的,因为定义了Zend线程安全ZTS常量(在模块的源代码中或在VS 2008的预处理器定义中)。

只需将ZTS=1更改为ZTS=0即可 工作 您必须完全删除ZTS

的定义