(共556篇)
全部分类

phpize报错grep:/usr/include/php/main/php.h:Nosuchfileordirectory
[ PHP ] 

环境

1
2
3
Mac Big Sur 11.2.3
PHP 7.3.24
redis 5.3.3

在上面环境中,使用phpize安装redis时报错

1
2
3
4
5
6
7
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:

这是因为Mac系统版本问题, 根本找不到/usr/include目录,

首先执行

1
▶ /usr/bin/xcrun --show-sdk-path

会看到:

1
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/

如果没有,请先执行xcode-select --install安装命令行工具,再次验证上个命令

phpize命令会在/usr/include中查找一些文件,既然这些文件不存在, 就直接修改phpize中的文件路径即可, 但是phpize文件也是系统文件,是不可以修改的, 这就需要把这些文件拷贝一份

如果不知道phpize的位置可以借用whereis phpize查看

比如我在用户目录下创建了一个文件夹

1
2
3
4
cd 
mkdir php-env
sudo cp /usr/bin/phpize ~/php-env
sudo cp /usr/bin/php-config ~/php-env

先修改phpize文件, 在文件第二行前插入一行

1
XCODE_SDK_ROOT=$(/usr/bin/xcrun --show-sdk-path)

找到

1
includedir="`eval echo ${prefix}/include`/php"

替换为

1
includedir="`eval echo ${XCODE_SDK_ROOT}${prefix}/include`/php"

再修改php-config文件,同样在文件第二行前插入一行

1
XCODE_SDK_ROOT=$(/usr/bin/xcrun --show-sdk-path)

找到

1
include_dir="${prefix}/include/php"

替换为

1
include_dir="${XCODE_SDK_ROOT}${prefix}/include/php"

现在进入下载的php-redis文件中,执行~/php-env/phpize命令即可.