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

写个简单的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;
?>


浙公网安备 33010602011771号