繁体   English   中英

CouchBase扩展安装错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM