Mac 下编译 PHP 扩展遇到的一些问题

    MacOS 每次更新都会给编译 PHP 扩展带来一些麻烦,今天在安装 PCNTL 扩展的时候又遇上了,所以记录一下。

    我的系统版本是 macOS High Sierra 10.13.3,PHP 版本是 PHP-7.1.7。

    首先我从官网下载跟我系统版本相同的 PHP,默认下载到 Downloads 目录下面,之后运行 phpize,提示如下错误:

grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory

    使用 vim 查看 phpize,发现 phpize 默认的根目录是 /usr/include/php,我在 /user/include/ 目录下新建 php 目录,并将下载的代码 mv 到该目录下。

    重新运行 phpize,工作正常。

    运行 ./configure,工作正常。

    运行 make,提示如下错误:

/usr/include/php/Zend/zend_portability.h:48:11: fatal error: 'zend_config.h' file not found

    zend_config.h 文件缺失,我看了下,目录下确实没有这个文件,以为是下载的遗漏了,然后去 github php-src 里面也没找到。百度的结果是这个文件在 Xcode 的目录下面有。

    在“/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php”这个目录下面存在该文件。将文件复制到当前 php 目录下,重新编译。

    后面会一直提示找不到“php_config.h tsrm_config.h build-defs.h”等文件,逐个从 Xcode 目录下将这些文件复制到当前 PHP 目录下,之后编译成功。

    编译成功之后在 php.ini 文件中将扩展添加进去,重启 apache,查看 phpinfo,可以看到扩展已经安装成功。

你可能感兴趣的:(PHP,操作系统,开发环境)