websupport-sk Memcache模組放置於: https://github.com/websupport-sk/pecl-memcache, 請自行clone下來修改
這裡PHP採用Debian開發者Ondřej Surý的PHP 7 repository: https://packages.sury.org/php/
我在虛擬機上安裝Debian Linux 9.5作業系統, 安裝PHP 7.3, 加入Ondřej Surý的PHP 7 repository
apt-get install apt-transport-https lsb-release ca-certificates zlib1g-dev git
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
然後更新Ondřej Surý的PHP 7 repository
apt-get update
安裝PHP 7.3
apt-get install php7.3 php7.3-cli php7.3-common php7.3-curl php7.3-mbstring php7.3-mysql php7.3-xml php7.3-fpm php7.3-dev php7.3-zip
把websupport-sk Memcache模組下載
git clone https://github.com/websupport-sk/pecl-memcache.git
進入模組目錄, 我先試著編譯
cd pecl-memcache
phpize
./configure
make
會出現這樣的錯誤
/usr/local/src/pecl-memcache/php7/memcache.c: In function ‘mmc_find_persistent’:
/usr/local/src/pecl-memcache/php7/memcache.c:731:19: error: lvalue required as left operand of assignment
GC_REFCOUNT(le) = 1;
^
/usr/local/src/pecl-memcache/php7/memcache.c: In function ‘php_mmc_pool_addserver’:
/usr/local/src/pecl-memcache/php7/memcache.c:789:24: error: lvalue required as increment operand
GC_REFCOUNT(list_res)++;
^~
/usr/local/src/pecl-memcache/php7/memcache.c: In function ‘php_mmc_connect’:
/usr/local/src/pecl-memcache/php7/memcache.c:873:24: error: lvalue required as increment operand
GC_REFCOUNT(list_res)++;
^~
Makefile:194: recipe for target 'php7/memcache.lo' failed
make: *** [php7/memcache.lo] Error 1
修改原始碼
nano php7/memcache.c
前往錯誤行數731, 把GC_REFCOUNT(le) = 1;修改為GC_SET_REFCOUNT(le, 1);
前往錯誤行數789, 把GC_REFCOUNT(list_res)++;修改為GC_ADDREF(list_res);
前往錯誤行數873, 把GC_REFCOUNT(list_res)++;修改為GC_ADDREF(list_res);
接著重新編譯就不會出錯了
make
make install
memcache.so將會安裝在/usr/lib/php/20180731/目錄
手動製作PHP 7.3的memcache.ini
nano /etc/php/7.3/mods-available/memcache.ini
貼入內容
; configuration for php memcache module
; priority=20
extension=memcache.so
啟用Memcache模組
phpenmod memcache
檢視已啟用模組
php -m
顯示如下
[PHP Modules]
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mbstring
memcache
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
Memcache模組正確的安裝完成