php8安装memcache和memcached扩展

背景php8安装memcached扩展编译时报错

/home/wxw/Packages/memcached-3.1.0/php_memcached_session.c: In function ‘ps_read_memcached’:
/home/wxw/Packages/memcached-3.1.0/php_memcached_session.c:448:25: error: expected ‘)’ before ‘TSRMLS_CC’
php_error_docref(NULL TSRMLS_CC, E_WARNING, "error getting session from memcached: %s", memcached_last_error_message(memc));
^
/home/wxw/Packages/memcached-3.1.0/php_memcached_session.c:448:25: error: too few arguments to function ‘php_error_docref’
In file included from /home/wxw/Packages/memcached-3.1.0/php_memcached.h:20:0,
from /home/wxw/Packages/memcached-3.1.0/php_memcached_session.c:17:
/opt/php/include/php/main/php.h:327:23: note: declared here
PHPAPI ZEND_COLD void php_error_docref(const char *docref, int type, const char *format, ...)
^
/home/wxw/Packages/memcached-3.1.0/php_memcached_session.c: In function ‘ps_write_memcached’:
/home/wxw/Packages/memcached-3.1.0/php_memcached_session.c:478:26: error: expected ‘)’ before ‘TSRMLS_CC’
php_error_docref(NULL TSRMLS_CC, E_WARNING, "error saving session to memcached: %s", memcached_last_error_message(memc));
^
/home/wxw/Packages/memcached-3.1.0/php_memcached_session.c:478:26: error: too few arguments to function ‘php_error_docref’
In file included from /home/wxw/Packages/memcached-3.1.0/php_memcached.h:20:0,
from /home/wxw/Packages/memcached-3.1.0/php_memcached_session.c:17:

版本
OS CentOS Linux release 7.9.2009
PHP 8.1.14
memcached 扩展 memcached-3.1.0
memcached memcached-1.4.15 (直接yum安装的)

1.安装依赖

yum -y install zlib-devel libmemcached-devel

2. phpize安装 memcached 扩展

/opt/php/bin/phpize
./configure --with-php-config=/opt/php/bin/php-config

正常情况make && make install 即可,但测试时没注意结果,在make install后直接配置php.ini后启动php-fpm报错
php-fpm: symbol lookup error: /opt/php/lib/php/extensions/no-debug-non-zts-20210902/memcached.so: undefined symbol: php_memc_session_minit重新编译时发现php_memcached_session.c编译一直报错
解决方案:https://github.com/sodabrew/php-memcached/blob/26e38ccee6110a1491c5e36d297cdb12cb261a99/php_memcached_session.c 替换php_memcached_session.c的内容重新编译安装,启动php-fpm正常
echo 'extension=memcache.so'>> /opt/php/lib/php.ini

image

写个简单的php连接memcached测试
vim mem_test.php

点击查看代码
<?php
        $memcache = new Memcached;
        $memcache->addServer('192.168.110.77',11211) or die("could not connnect");
        $memcache->set('keyy','phptest');
        $get_value=$memcache->get('keyy');
        echo $get_value;
?>

image

参考:https://github.com/openvenues/php-postal/issues/27

https://www.cnblogs.com/chuwu/p/9732579.html#:~:text=<%3Fphp %24memcache %3D new Memcache%3B %2F%2F创建一个memcache对象 %24memcache->connect ('localhost'%2C,'test')%3B %2F%2F设置一个变量到内存中,名称是key 值是test %24get_value %3D %24memcache->get ('key')%3B %2F%2F从内存中取出key的值

posted @ 2023-02-08 10:22  王又又的锅  阅读(727)  评论(0)    收藏  举报