Mac 11.0以上版本不能編譯PHP的問題

在Mac 11.x版本編譯php會提示php.h不存在,phpize也看不出php版本內(nèi)容:

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 不在支持php了,后續(xù)可能會移除php, 通過php -v 可以看出

但實際上還沒有完全移除PHP,可以查看/Library/Developer/CommandLineTools/SDKs目錄下你系統(tǒng)版本對應(yīng)的目錄中usr/include/php里面的內(nèi)容是否還存在,如果還存在說明php devl的頭文件還在哪里,只是usr/bin/phpize找不到他們。

通過phpize的輸出也不難看出,他是去usr/include/php里面找對應(yīng)的頭文件,那么我們建立軟鏈接到對應(yīng)的/Library/Developer/CommandLineTools/SDKs下面的php目錄即可。但由于/usr/include目錄是Read only的,不允許創(chuàng)建軟鏈接,解決辦法就是:

1. 把/usr/bin/phpize 和/usr/bin/php-config兩個文件復(fù)制到/usr/local/bin,并修改如下兩處內(nèi)容,加上local

php-config中extension_dir也重新指定一個目錄,并且把/etc/php.ini extension_dir中也同步調(diào)整:

2. 建立軟連接 ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/usr/include/php /usr/local/include/php

然后使用phpize時指定全路徑 /usr/local/bin/phpize

configure時指定我們修改后的php-config:/usr/local/bin/phpize ./configrue –with-php-config=/usr/local/bin/php-config

make, make install 最后把編譯的so文件會拷貝到指定的extension_dir目錄中


該問題解決后,可通過pear的方式來安裝其他pecl 擴展了

1. 下載pear: https://pear.php.net/go-pear.phar
2. 安裝: php go-pear.phar,在出現(xiàn)的頁面中分別把1,4兩步設(shè)置為如下圖所示,這其實是讓pecl命令在bin目錄中
3. 然后就可以通過pecl按照擴展了,比如pecl install zip,會下載源碼并編譯,同上面的phpize & configure & make & make install