一:下载源码包
http://pecl.php.net/package/memcached (PHP5.6选择2.2.0版本,PHP7选择3.X版本)
二:解压下载的文件
tar zxvf memcached-3.1.3.tar
三:执行命令
1:cd memcached-3.1.3
2:phpize //执行phpize命令生成configure建立php外挂模块
3:./configure --prefix=/usr/local/Cellar/php\@7.1/7.1.19/bin/php-config //根据自己的php-config地址
4:make && make install(mac会报错,除非你的mac OSX 系统版本低)
leyangjundeMacBook-Pro:memcached-3.1.3 leyangjun$ make install
Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20160303/
cp: /usr/lib/php/extensions/no-debug-non-zts-20160303/#INST@48890#: Operation not permitted
make: *** [install-modules] Error 1
leyangjundeMacBook-Pro:memcached-3.1.3 leyangjun$ make && make install
/bin/sh /Users/leyangjun/Downloads/memcached-3.1.3/libtool --mode=install cp ./memcached.la /Users/leyangjun/Downloads/memcached-3.1.3/modules
cp ./.libs/memcached.so /Users/leyangjun/Downloads/memcached-3.1.3/modules/memcached.so
cp ./.libs/memcached.lai /Users/leyangjun/Downloads/memcached-3.1.3/modules/memcached.la
----------------------------------------------------------------------
Libraries have been installed in:
/Users/leyangjun/Downloads/memcached-3.1.3/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `DYLD_LIBRARY_PATH' environment variable
during execution
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20160303/
cp: /usr/lib/php/extensions/no-debug-non-zts-20160303/#INST@49327#: Operation not permitted
make: *** [install-modules] Error 1
报错信息:
Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20160303/
cp: /usr/lib/php/extensions/no-debug-non-zts-20160303/#INST@49327#: Operation not permitted 即使sudo make && make install也一样会报错
错误原因:
因为是OSX 10.11 El Capitan开始,新添加了一个新的安全机制叫系统完整性保护System Integrity Protection (SIP),所以对于目录 /System,/sbin,/usr (不包含/usr/local/)仅仅供系统使用,其它用户或者程序无法直接使用,而我们的/usr/lib/php/extensions/刚好在受保护范围内。
解决办法是,禁掉SIP保护机制:
重启系统 按住Command + R (重新亮屏之后就开始按,象征地按几秒再松开,出现苹果标志,ok) 菜单“实用工具” ==>> “终端” ==>> 输入csrutil disable;执行后会输出:Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect. 重启系统
禁止掉SIP后,就可以顺利的安装了,当然装完了以后记得重新打开SIP,方法同上,只是命令是csrutil enable。
以上解决方法可以不用,直接用该步骤也可以完成安装:
源码文包文件里面的model已经有对应memcached.so文件(若没有,make && make install编译后在看下),仔细看编译过程会有这个命令:cp ./.libs/memcached.so /Users/leyangjun/Downloads/memcached-3.1.3/modules/memcached.so 相关的拷贝动作
把memcached.so文件直接拷贝到你的扩展目录下面就行
leyangjundeMacBook-Pro:20160303 leyangjun$ cp /Users/leyangjun/Downloads/memcached-3.1.3/modules/memcached.so ./
leyangjundeMacBook-Pro:20160303 leyangjun$ pwd
/usr/local/Cellar/php@7.1/7.1.19/pecl/20160303
leyangjundeMacBook-Pro:20160303 leyangjun$ ll
total 1304
-rwxr-xr-x 1 leyangjun admin 71332 8 9 2018 memcache.so
-rwxr-xr-x 1 leyangjun admin 115416 3 29 13:46 memcached.so
-rwxr-xr-x 1 root admin 471948 8 9 2018 redis.so
查看自己的扩展目录地址在php.ini文件中就可以查看 (vi php.ini)
extension_dir=/usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/ --这就是分区目录
extension=memcached.so --在此增加对应扩展名
重启PHP:
sudo pkill -9 php-fpm
sudo /usr/local/Cellar/php\@7.1/7.1.19/sbin/php-fpm -D
增加完配置后,重启PHP即可