Mac Silicon M1 編譯安裝 PHP8 & Swoole4.6 ARM64 全過程記錄

最近搞了一臺 M1 的 Mac mini 準備用這個開發(fā) mixphp v3 版本,之前嘗試了幾次沒有編譯成功,今天再次嘗試安裝成功了,網絡上很多人的文章存在問題(可能是系統(tǒng)環(huán)境不同),特此分享讓后續(xù)的人閉坑糙置。

面臨的問題

由于最新版本的 macOS Big Sur 即便關閉安全模式 /usr/lib 也無法寫入文件摄闸,因此導致 make install 無法安裝任何 php 擴展善镰,因此想裝 Swoole 只能自行編譯安裝 php 到 /usr/local 目錄

% csrutil status
System Integrity Protection status: disabled.
% mkdir /usr/lib/php/extensions/test
mkdir: /usr/lib/php/extensions/test: Read-only file system

PHP Build

由于 brew arm64 版本無法使用,只能采用 x64 版本安裝了一些依賴年枕,后面導致了很多問題炫欺,本想編譯一個 x64 PHP+Swoole 在編譯 x64 Swoole 的時候異常就沒有繼續(xù)了,轉而研究 arm64 PHP+Swoole

arch -x86_64 brew install openssl zlib curl libjpeg libpng libxml2 gettext freetype pcre libiconv libzip

參數(shù)中的路徑都需要根據(jù)自己電腦所安裝的實際路徑替換

./configure --prefix=/usr/local/php8.0.7 --with-config-file-path=/usr/local/php8.0.7/etc --with-config-file-scan-dir=/usr/local/php8.0.7/etc/php.d --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --with-mhash --enable-tokenizer --enable-pcntl --enable-sockets --enable-soap --enable-simplexml --without-pear --with-pear --with-zlib=/usr/local/opt/zlib --with-curl=/usr/local/Cellar/curl/7.77.0 --with-openssl=/usr/local/Cellar/openssl@1.1/1.1.1k --with-iconv=/usr/local/Cellar/libiconv/1.16
make

PHP Build ERROR: No package 'openssl' found

需要編譯安裝arm64:openssl (系統(tǒng)自帶的 LibreSSL 不可以)

基于 Mac Silicon M1 的OpenSSL 編譯:https://segmentfault.com/a/1190000039284154

sudo cp /usr/local/openssl/lib/pkgconfig/* /usr/local/lib/pkgconfig/

繼續(xù)編譯:php (將 --with-openssl 更換為 /usr/local/openssl)

PHP Build ERROR: configure: error: Please reinstall the iconv library

需要編譯安裝arm64:iconv

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar xvzf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make && sudo make install

繼續(xù)編譯:php (將 --with-iconv 更換為 /usr/local/libiconv)

PHP Build ERROR: ld: warning: ignoring file /usr/local/Cellar/oniguruma/6.9.7.1/lib/libonig.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64

需要編譯安裝arm64:oniguruma

wget https://github.com/kkos/oniguruma/archive/v6.9.5_rev1.tar.gz
tar xvzf v6.9.5_rev1.tar.gz
cd oniguruma-6.9.5_rev1
./autogen.sh

Oniguruma Build ERROR: autoreconf: error: aclocal failed with exit status: 2

需要安裝:automake熏兄,安裝了一個x64的也可以用

arch -x86_64 brew install automake

繼續(xù)編譯:oniguruma

./autogen.sh
./configure --prefix=/usr/local/oniguruma
make && sudo make install

移除 x64 oniguruma 將 arm64 oniguruma 關聯(lián)到系統(tǒng)

arch -x86_64 brew uninstall oniguruma
sudo cp /usr/local/oniguruma/lib/pkgconfig/* /usr/local/lib/pkgconfig/
sudo cp /usr/local/oniguruma/include/* /usr/local/include/
export LDFLAGS="-L/usr/local/oniguruma/lib"
export CPPFLAGS="-I/usr/local/oniguruma/include"
export PKG_CONFIG_PATH="/usr/local/oniguruma/lib/pkgconfig"
make clean
./configure --prefix=/usr/local/php8.0.7 --with-config-file-path=/usr/local/php8.0.7/etc --with-config-file-scan-dir=/usr/local/php8.0.7/etc/php.d --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --with-mhash --enable-tokenizer --enable-pcntl --enable-sockets --enable-soap --enable-simplexml --without-pear --with-pear --with-zlib=/usr/local/opt/zlib --with-curl=/usr/local/Cellar/curl/7.77.0 --with-openssl=/usr/local/openssl --with-iconv=/usr/local/libiconv
make

PHP Build ERROR: ld: can't write output file: sapi/phpdbg/phpdbg for architecture arm64

sudo make && sudo make install

PHP Build ERROR: PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.

忽略這個異常

PHP Build ERROR: Allocation of JIT memory failed, PCRE JIT will be disabled. This is likely caused by security restrictions. Either grant PHP permission to allocate executable memory, or set pcre.jit=0

sudo vim /Users/liujian/Downloads/php-8.0.7/ext/phar/phar.php

新增 ini_set("pcre.jit", "0");

sudo make install

Swoole Build

增加一個 --enable-thread-context品洛,并指定 --with-openssl-dir 為編譯版本的路徑

wget https://github.com/swoole/swoole-src/archive/refs/tags/v4.6.7.tar.gz
tar xvzf v4.6.7.tar.gz
cd swoole-src-4.6.7
./configure --with-php-config=/usr/local/php8.0.7/bin/php-config --enable-openssl --enable-http2 --enable-thread-context --with-openssl-dir=/usr/local/openssl
make && sudo make install
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市摩桶,隨后出現(xiàn)的幾起案子桥状,更是在濱河造成了極大的恐慌,老刑警劉巖硝清,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辅斟,死亡現(xiàn)場離奇詭異,居然都是意外死亡芦拿,警方通過查閱死者的電腦和手機士飒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔗崎,“玉大人酵幕,你說我怎么就攤上這事』嚎粒” “怎么了芳撒?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長未桥。 經常有香客問我番官,道長,這世上最難降的妖魔是什么钢属? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任徘熔,我火速辦了婚禮,結果婚禮上淆党,老公的妹妹穿的比我還像新娘酷师。我一直安慰自己讶凉,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布山孔。 她就那樣靜靜地躺著懂讯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪台颠。 梳的紋絲不亂的頭發(fā)上褐望,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音串前,去河邊找鬼瘫里。 笑死,一個胖子當著我的面吹牛荡碾,可吹牛的內容都是我干的谨读。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼坛吁,長吁一口氣:“原來是場噩夢啊……” “哼劳殖!你這毒婦竟也來了?” 一聲冷哼從身側響起拨脉,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤哆姻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后玫膀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矛缨,經...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年匆骗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片誉简。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡碉就,死狀恐怖,靈堂內的尸體忽然破棺而出闷串,到底是詐尸還是另有隱情瓮钥,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布烹吵,位于F島的核電站碉熄,受9級特大地震影響,放射性物質發(fā)生泄漏肋拔。R本人自食惡果不足惜锈津,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凉蜂。 院中可真熱鬧琼梆,春花似錦性誉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至煌往,卻和暖如春倾哺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背刽脖。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工羞海, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人曾棕。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓扣猫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親翘地。 傳聞我的和親對象是個殘疾皇子申尤,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345