您的位置:首页 > 游戏 > 游戏 > 青岛网站制作_logo在线制作免费平台_搜索引擎优化要考虑哪些方面_网络营销课程培训课程

青岛网站制作_logo在线制作免费平台_搜索引擎优化要考虑哪些方面_网络营销课程培训课程

2024/12/23 21:02:04 来源:https://blog.csdn.net/weixin_47792780/article/details/144467434  浏览:    关键词:青岛网站制作_logo在线制作免费平台_搜索引擎优化要考虑哪些方面_网络营销课程培训课程
青岛网站制作_logo在线制作免费平台_搜索引擎优化要考虑哪些方面_网络营销课程培训课程

        Php技术现在感觉越来越没落了,我也很久没有再接触使用过PHP,今天有一个很多年前的项目发现在使用 sphinx ,而最新的升级后发现新的 php8版本的docker 容器镜像中没有安装 sphinx 扩展,导致搜索功能不可用,个人又总是看不惯问题的存在,就想着把它解决。但解决一些麻烦问题的过程总是一波三折,今天把这个放在这里做个记录,同时也希望为一些会碰到相同问题的朋友提供一点帮助。

        安装 sphinx 需要进行两个大步的操作,第一步是安装 Sphinx客户端库的开发包,第二步是给PHP安装sphinx的扩展,如果直接进行第二步安装sphinx扩展,就会收到错误提示:Cannot find libsphinxclient headers。

root@267aa5d53517:/var/www/html/exts/sphinx-1.1.0# ./configure --with-php-checking for PHP extension directory... /usr/local/lib/php/extensions/no-debug-non-zts-20210902
checking for PHP installed headers prefix... /usr/local/include/php
checking if debug is enabled... no
checking if zts is enabled... no
checking for gawk... no
checking for nawk... nawk
checking if nawk is broken... no
checking for sphinx support... yes, shared
checking for libsphinxclient headers in default path... not found
configure: error: Cannot find libsphinxclient headers

        报错解释: Cannot find libsphinxclient headers,这个错误表明系统中缺少Sphinx全文搜索引擎的客户端库的头文件。Sphinx客户端库是用于与Sphinx搜索服务器通信的,而头文件通常用于编译需要与该库交互的程序。

        我这里的是基于Ubuntu 搭建的 Docker 服务,大多操作都是在Docker容器中进行,周知,所以接来开始进行操作 :

一:安装 Sphinx客户端库的开发包

        Sphinx客户端库的开发包的官网地址如下,

  Sphinx 3 downloads | Sphinxicon-default.png?t=O83Ahttps://sphinxsearch.com/downloads/current/        进入下载对应的系统版本文件,截图如下:

# 下载后解压进入目录 注意是进入api下面的目录文件夹中

cd sphinx-3.7.1/api/libsphinxclient/
mkdir -p /usr/local/php/sphinx
./configure --prefix=/usr/local/php/sphinx
make
make install

        也有一些提议使用 apt-get 安装,记在这里,我一开始用的如下命令,但提示E: Unable to locate package libsphinxclient-dev。这步操作应该没有什么问题。

sudo apt-get update
sudo apt-get install libsphinxclient-dev

 二、安装 Php 的 sphinx 扩展

        为php安装sphinx扩展,首先要下载 sphinx 扩展包,其官网地址如下:PECL :: Package :: sphinxicon-default.png?t=O83Ahttp://pecl.php.net/package/sphinx

      开始我下载了页面中的最新版本 sphinx-1.3.3.tgz  ,但在安装的时候发现有大量报错内容,

/var/www/html/exts/sphinx-1.0.3/sphinx.c:1577:2: error: too few arguments to function 'php_error_docref'
 1577 |  php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "SphinxClient instance cannot be (un)serialized");
      |  ^~~~~~~~~~~~~~~~
In file included from /var/www/html/exts/sphinx-1.0.3/sphinx.c:26:
/usr/local/include/php/main/php.h:327:23: note: declared here
  327 | PHPAPI ZEND_COLD void php_error_docref(const char *docref, int type, const char *format, ...)
      |                       ^~~~~~~~~~~~~~~~
/var/www/html/exts/sphinx-1.0.3/sphinx.c: In function 'zm_startup_sphinx':
/var/www/html/exts/sphinx-1.0.3/sphinx.c:1773:45: error: 'php_sphinx_client_read_property' undeclared (first use in this function); did you mean 'php_sphinx_client_handlers'?
 1773 |  php_sphinx_client_handlers.read_property = php_sphinx_client_read_property;
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                             php_sphinx_client_handlers
/var/www/html/exts/sphinx-1.0.3/sphinx.c:1774:46: error: 'php_sphinx_client_get_properties' undeclared (first use in this function); did you mean 'php_sphinx_client_handlers'?
 1774 |  php_sphinx_client_handlers.get_properties = php_sphinx_client_get_properties;
      |                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                              php_sphinx_client_handlers
/var/www/html/exts/sphinx-1.0.3/sphinx.c:1777:53: error: expected ')' before 'TSRMLS_CC'
 1777 |  ce_sphinx_client = zend_register_internal_class(&ce TSRMLS_CC);
      |                                                     ^~~~~~~~~~
      |                                                     )
/var/www/html/exts/sphinx-1.0.3/sphinx.c:1778:36: error: 'php_sphinx_client_new' undeclared (first use in this function); did you mean 'php_sphinx_client'?
 1778 |  ce_sphinx_client->create_object = php_sphinx_client_new;
      |                                    ^~~~~~~~~~~~~~~~~~~~~
      |                                    php_sphinx_client

          因为这些 sphinx 版本过旧,不支持PHP7+,更何况我这现在使用的是最新的php8版本,在有上面的页面中有一个 [ Browse Source ] 链接,进入的页面中有提到 php7 有一个专门的版本,相关的错误见链接: PHP :: Bug #71586 :: Sphinx extension doesn't compile with PHP 7.0.3  页面最下方有说明:

PHP7 support is in a separate branch, called "php7": http://git.php.net/?p=pecl/search_engine/sphinx.git;a=shortlog;h=refs/heads/php7
I'll release a new package version when PECL infrastructure is ready for releases from different branches, but until then you'll have to use Git to get the sources.

        但是上面这个链接的地址打不开!无法访问!唯一的救命稻草竟然打不开啊!真折腾!最后通过在网上直接寻找资源,总算是找到了这个包文件。资源地址链接如下:

https://download.csdn.net/download/weixin_47792780/90145015

        下载资源后进行安装,修改php.ini,添加 sphinx.so 扩展重启php即可。我这里的PHP详细版本是php8.1.4。查看信息界面如下截图:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com