今天安编绎安装php5328在make时报以下错误:

php-5.3.28/Zend/zend_language_parser.h:317:error:conflictingtypesforzendparse
php-5.3.28/Zend/zend_globals_macros.h:35:note:previousdeclarationofzendparsewashere
make:***[ext/standard/basic_functions.lo]Error1

网友的解决方法是:把zend_language_parser.h文件中317行的内容intzendparse(void*)与zend_globals_macros.h35行intzendparse(void*compiler_globals);弄成一致。再进行make可以成功。

这样make成功的做法会有一个问题产生:在需要安装php扩展ZendGuardLoader后,再启动php-fpm时就会报以下错误:

Failedloading/usr/local/php/lib/php/extensions/php-5.3.x/ZendGuardLoader.so:/usr/local/php/lib/php/extensions/php-5.3.x/ZendGuardLoader.so:undefinedsymbol:compiler_globals

导致ZendGuardLoader扩展包加载不成功。

最终解决方法:

在使用./confingure编绎时,不要加载“--enable-maintainer-zts”参数,“--enable-maintainer-zts”参数的作用是启用线程安全。