久仰大名,Swoft
标签:#
框架
Yaf学习小记
工作中需要用到,提前学习下。以此文记录下遇到的问题或者知识点
##安装 && 配置
1、phpize 作用
2、m4作用
m4 是 POSIX 标准中的一部分,所有版本的 UNIX 下都可用。虽然这种语言可以单独使用,但大多数人需要 m4 仅仅是因为 GNU autoconf 中的 “configure” 脚本依赖它。宏处理器(或预处理器)一般用作文本替换工具。最终用户经常会用它来处理要反复使用的文本模板,典型的是用于编程工具,还会用于文本编辑和文字处理工具。
m4 是一种宏处理器,它扫描用户输入的文本并将其输出,期间如果遇到宏就将其展开后输出。宏有两种,一种是内建的,另一种是用户定义的,它们能接受任意数量的参数。除了做展开宏的工作之外,m4 内建的宏能够加载文件,执行 Shell 命令,做整数运算,操纵文本,形成递归等等。m4 可用作编译器的前端,或者单纯作为宏处理器来用。
参考文章:
作者:garfileo 作者主页
本文整理自:https://segmentfault.com/a/1190000004104696
整理者:Timekeeperl csdn博客
3、phpize 时 m4 报错 need GNU m4 1.4 or later: /usr/local/bin/m4
检查问题时候发现查找到的m4已经无法正常使用
网上找寻了一些方法,尝试了更新,无果
brew upgrade m4
然后发现系统内是存在一个1.4.8版本的m4的,位置如下:
usr/local/Cellar/m4/1.4.18
遂查了下改变这个配置文件的位置:
/usr/local/bin/autom4te
此文件的第90行处,是m4的路径配置,将m4的路径设置为
/usr/local/Cellar/m4/1.4.18/bin/m4
至此 done
4、make 时 pcre.h 报错
/usr/include/php/ext/pcre/php_pcre.h:29:10: fatal error: 'pcre.h' file not found
#include "pcre.h"
^~~~~~~~
1 error generated.
make: *** [routes/yaf_route_regex.lo] Error 1
查了下原因:没有安装pcre,或者安装pcre的目录不对
brew install pcre
解决
5、make install 报错
cp: /usr/lib/php/extensions/no-debug-non-zts-20160303/#INST@62550#: Operation not permitted
Mac OS Sierra 安装PHP扩展,在make install 的时候,出现类似
cp: /usr/lib/php/extensions/no-debug-non-zts-20131226/#INST@12567#: Operation not permitted
make: *** [install-modules] Error 1
的错误,是因为是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。当然,就算关掉了SIP保护机制,你依然需要root权限将yaf.so拷贝进去。
Read More ~