CouchBase 扩展安装错误
CouchBase extension install error
我使用 php 和 couchbase nosql 数据库,当我在 ubuntu 上安装 couchbase-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 运行 并希望针对它编译 couchbase 的 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 正确编译,将 so 文件保存到 /usr/lib/php/20131226/couchbase.so
我们可以使用它了。
长话短说:
当编译一个扩展时,PECL 将它放入一个像 /usr/lib/php/20131226
这样的文件夹中。最后一个文件夹名称代表 PHP API 此扩展是针对编译的。请致电 php -i | grep 'PHP API'
检查您的版本,看看这些数字是否匹配。
如果您还安装了多个 PHP 版本并希望保留它们,此答案可能会有所帮助:pecl installs for previous php version
一个有用的提示
PHP 有一个名为 extension_dir
的变量,它是使用相对路径加载的所有扩展路径的前缀。如果你只是通过设置文件名加载模块(并让 PHP 添加前缀),你应该不会有这些问题。请注意,对于加载为 zend_extension
- f.e 的扩展,您必须使用绝对路径。 xdebug ...
我使用 php 和 couchbase nosql 数据库,当我在 ubuntu 上安装 couchbase-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 运行 并希望针对它编译 couchbase 的 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 正确编译,将 so 文件保存到 /usr/lib/php/20131226/couchbase.so
我们可以使用它了。
长话短说:
当编译一个扩展时,PECL 将它放入一个像 /usr/lib/php/20131226
这样的文件夹中。最后一个文件夹名称代表 PHP API 此扩展是针对编译的。请致电 php -i | grep 'PHP API'
检查您的版本,看看这些数字是否匹配。
如果您还安装了多个 PHP 版本并希望保留它们,此答案可能会有所帮助:pecl installs for previous php version
一个有用的提示
PHP 有一个名为 extension_dir
的变量,它是使用相对路径加载的所有扩展路径的前缀。如果你只是通过设置文件名加载模块(并让 PHP 添加前缀),你应该不会有这些问题。请注意,对于加载为 zend_extension
- f.e 的扩展,您必须使用绝对路径。 xdebug ...