在macOs Big Sur 11.2.2使用phpize 安装扩展的时候遇到以下问题
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
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
原因是 /usr/include 文件夹丢失,因系统原因我们也没有权限进行添加修改
解决此问题。方法如下:
首先确保已安装 Xcode 和命令行工具。打开终端窗口并运行以下命令以显示 SDK 路径:
xcrun --show-sdk-path
此命令应输出如下内容
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
如果没有,请执行以下命令安装命令行工具
xcode-select --install
并按照说明进行操作。安装完成后,启动Xcode App以确保安装完成。
现在再次尝试显示 SDK-Path
xcrun --show-sdk-path
编译扩展所需的 php 工具尝试使用这个缺少的包含文件夹。我们将创建 phpize 和 php-config 的修改版本,它们将使用 macOS SDK 中的包含。首先我们将复制 phpize 和 php-config,然后我们将用补丁修改这些副本。
我们在您的主目录中的 /Users/YOUR-USERNAME 下创建一个名为“php-private”的新文件夹..
mkdir ~/php-private/
现在将 phpize 和 php-config 复制到 php-private
cp /usr/bin/phpize ~/php-private/
cp /usr/bin/php-config ~/php-private/
现在通过执行来确定您的系统上安装了哪个 PHP 版本
grep version= ~/php-private/php-config
你应该用 7.3.22 或 7.3.24 得到这样的东西
version="7.3.22-(to be removed in future macOS)"
下载 phpize 补丁phpize-bigsur.patch.zip并保存
对于 PHP 7.3.22 下载 php-config 补丁php-config-7.3.22-bigsur.patch.zip并保存。
对于 PHP 7.3.24 下载 php-config 补丁php-config-7.3.24-bigsur.patch.zip并保存。
提取压缩的补丁文件。
PHP 7.3.22:
unzip ~/Downloads/phpize-bigsur.patch.zip -d ~/Downloads/
unzip ~/Downloads/php-config-7.3.22-bigsur.patch.zip -d ~/Downloads/
PHP 7.3.24:
unzip ~/Downloads/phpize-bigsur.patch.zip -d ~/Downloads/
unzip ~/Downloads/php-config-7.3.24-bigsur.patch.zip -d ~/Downloads/
现在我们修补 phpize 和 php-config 副本
PHP 7.3.22:
patch ~/php-private/phpize < ~/Downloads/phpize-bigsur.patch
patch ~/php-private/php-config < ~/Downloads/php-config-7.3.22-bigsur.patch
PHP 7.3.24:
patch ~/php-private/phpize < ~/Downloads/phpize-bigsur.patch
patch ~/php-private/php-config < ~/Downloads/php-config-7.3.24-bigsur.patch
运行我们打过补丁的 phpize(要用新的,不能再用旧的了)
~/php-private/phpize
当一切顺利时,你会得到这样的东西
Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
运行我们打过补丁的 php-config,现在我们将找到修补后的 php-config 的完整路径。这可以像这样完成:
echo ~/php-private/php-config
输出类似于
/Users/YOUR-USERNAME/php-private/php-config
至此phpize 和php-config 的错误就解决了