解决apcu-bc在安装中出现的问题。
今天在编译安装apcu-bc时出现了:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20160303/apc.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20160303/apc.so: undefined symbol: zif_apcu_store in Unknown on line 0
这样的错误。解决之:
出现这种问题的原因一般是代码不兼空或是调用了未加载的库或扩展导致的。通过翻看代码查找到:
/* {{{ apc_functions[] */
zend_function_entry apc_functions[] = {
PHP_FE(apc_cache_info, arginfo_apcu_bc_cache_info)
PHP_FE(apc_clear_cache, arginfo_apcu_bc_clear_cache)
PHP_FALIAS(apc_store, apcu_store, arginfo_apcu_store)
PHP_FALIAS(apc_fetch, apcu_fetch, arginfo_apcu_fetch)
PHP_FALIAS(apc_enabled, apcu_enabled, arginfo_apcu_enabled)
PHP_FALIAS(apc_delete, apcu_delete, arginfo_apcu_delete)
PHP_FALIAS(apc_add, apcu_add, arginfo_apcu_store)
PHP_FALIAS(apc_sma_info, apcu_sma_info, arginfo_apcu_sma_info)
PHP_FE(apc_inc, arginfo_apcu_inc)
PHP_FE(apc_dec, arginfo_apcu_inc)
PHP_FALIAS(apc_cas, apcu_cas, arginfo_apcu_cas)
PHP_FALIAS(apc_exists, apcu_exists, arginfo_apcu_exists)
PHP_FE_END
};
可见apc_store是对apcu_store的alias.
那么出现这个问题的可能就是:1.未安装apcu. 2.apcu的加载晚于apc-bc.
通过查看配置文件发现apc与apcu在两个单独的配置文件中,这样可能是导致了apc-bc早于apcu加载的原因。于是修改配置为先加载apcu后加载 apc.问题解决。