Mac High Sierra 10.13.4编译PHP 7.2.4源码失败求助
在Mac High Sierra 10.13.4编译PHP 7.2.4失败的排查与解决思路
我之前在Mac High Sierra上编译旧版本PHP时也踩过不少类似的坑,结合你给出的configure参数,给你梳理几个大概率能解决问题的方向:
1. 补全并修正configure参数
你的configure命令最后是--wit...明显截断了,大概率漏写了--with-openssl这类关键参数,先把完整参数补全是基础。另外几个参数可以调整得更准确:
--with-jpeg-dir你没指定具体路径,Mac High Sierra默认没有系统级的jpeg库,建议用brew安装后指定路径;--with-curl如果用系统自带的curl可能有兼容性问题,最好指定brew安装的curl路径。
2. 安装/更新必要的依赖
Mac自带的很多库版本满足不了PHP 7.2的编译要求,用Homebrew安装缺失的依赖:
brew install jpeg libpng openssl curl
安装完成后,设置环境变量让编译脚本能找到这些库:
export LDFLAGS="-L/usr/local/opt/openssl/lib -L/usr/local/opt/jpeg/lib -L/usr/local/opt/libpng/lib -L/usr/local/opt/curl/lib" export CPPFLAGS="-I/usr/local/opt/openssl/include -I/usr/local/opt/jpeg/include -I/usr/local/opt/libpng/include -I/usr/local/opt/curl/include" export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig:/usr/local/opt/jpeg/lib/pkgconfig:/usr/local/opt/libpng/lib/pkgconfig:/usr/local/opt/curl/lib/pkgconfig"
3. 清理编译残留,重新配置编译
之前编译失败会留下缓存文件,先彻底清理干净:
make clean && make distclean
然后用修正后的完整configure命令重新执行(这里补全了截断的--with-openssl参数,并修正了几个路径):
./configure '--prefix=/Users/weizhao/lnmp/php-7.2.4' '--with-fpm-user=weizhao' '--with-fpm-group=weizhao' '--with-config-file-path=/Users/weizhao/lnmp/php-7.2.4/etc/php.ini' '--with-config-file-scan-dir=/Users/weizhao/lnmp/php-7.2.4/etc' '--with-pdo-mysql=/Users/weizhao/lnmp/mysql-5.7.9' '--with-mysql-sock=/tmp/mysqld.sock' '--with-curl=/usr/local/opt/curl' '--with-pear' '--with-gd' '--with-jpeg-dir=/usr/local/opt/jpeg' '--with-png-dir=/usr/local/Cellar/libpng/1.6.34' '--with-zlib' '--with-openssl=/usr/local/opt/openssl'
之后执行编译(-j4是利用多核加速,可根据你的CPU核心数调整):
make -j4
4. 针对具体错误日志精准排查
如果还是失败,一定要重点看make输出的最后10-20行错误信息:
- 如果是
undefined reference to XXX这类错误,基本是某个依赖库没找到或者版本不兼容; - 如果是
fatal error: XXX.h: No such file or directory,就是头文件路径没设对,检查对应的CPPFLAGS是否包含了该库的include目录。
比如我之前就遇到过openssl相关的编译错误,就是因为没指定--with-openssl参数和对应的环境变量。
内容的提问来源于stack exchange,提问作者weizhao
相关产品推荐
相关产品推荐

