[英]CouchBase extension install error
我使用php和ouchbase nosql数据库,当我在ubuntu上安装了ouchbase-ext时,在php -m
命令中出现了如下所示的错误:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20131226/couchbase.so' - /usr/lib/php/20131226/couchbase.so: undefined symbol: _zend_hash_str_update in Unknown on line 0
我们在这里遇到了同样的问题。 这是故事,以及我们的解决方法。
在我们的计算机上,我们试图使PHP 5.6运行,并希望针对该版本编译长沙发的PHP扩展。 我们还在同一台计算机上安装了PHP 7.1和PHP 7.0。 PECL将编译后的文件放入/usr/lib/php/20151012/couchbase.so
,该文件不在extension_dir
定义的路径之内,因此我们必须对其进行绝对设置,以便将其加载到PHP 5.6中并出现错误,类似于您的...我们稍后会注意到,文件夹20151012
的名称表示PHP API版本,通常随每个PHP版本而变化。 由于无论如何我们都没有使用更高版本的PHP,因此我们删除了PHP 7.1和7.0,然后重试。 现在,它已根据PHP 5.6正确编译,将/usr/lib/php/20131226/couchbase.so
文件保存到/usr/lib/php/20131226/couchbase.so
,我们可以使用它。
长话短说:
编译扩展时,PECL会将其放入/usr/lib/php/20131226
类的文件夹中。 最后一个文件夹名称表示此扩展程序针对的PHP API。 请通过调用php -i | grep 'PHP API'
检查您的版本php -i | grep 'PHP API'
php -i | grep 'PHP API'
,看看这些数字是否匹配。
如果您还安装了多个PHP版本并希望保留它们,则此答案可能会有所帮助: pecl为先前的php版本安装
有用的提示
PHP有一个名为extension_dir
的变量,该变量是使用相对路径加载的扩展的所有路径的前缀。 如果仅通过设置文件名来加载模块(并让PHP添加前缀),则不应出现这些问题。 请注意,对于加载为zend_extension
扩展,必须使用绝对路径-如fe xdebug ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.