首頁  >  文章  >  php框架  >  Mac 編譯安裝 Swoole 遇到 .h 檔案不存在問題解決方案

Mac 編譯安裝 Swoole 遇到 .h 檔案不存在問題解決方案

谨言慎行
谨言慎行原創
2020-11-05 14:27:312287瀏覽

前言

       1. 其實我真的沒想過安裝歷程會這麼Emmm… 怎麼描述呢,就是那種其實你要說難不難,但是就是也挺噁心,還有Mac 的本機自備環境以及有些文件不自動載入所引起的各種問題。

       2.還有就是,這樣的問題真的很少資料,所以記錄一下。


本機環境


且是 Xcode 處於未安裝狀態。
本機自備 PHP 版本 7.3
本地的環境設定工具,用的是 MxSrvs ,一款 Mac 版 PHP 開發環境。工具官網:http://www.xsrvs.com/ 工具雖小,但五臟俱全,開發完全足夠。

重點問題

1. 出現找不到PHP 的頭部檔案

2. 出現找不到Openssl 的頭檔(報錯資訊跟PHP 的差不多)

準備工作

官網需求

       這裡多說一句,雖然官方沒有標註autoconf  需要多少版本以上,但是編譯安裝的時候需要2.68 以上。

從Git 下載原始碼套件下載位址,我下載的是

安裝過程

因為是本地,所以我就把下載的套件直接進入控制台目錄了,就不寫前面的什麼CD目錄之類的了,然後運行下面的程式碼,因為我要編譯到工具裡的PHP 版本中,所以用的是工具提供的phpzie

/Applications/MxSrvs/bin/php/bin/phpize./configure \--enable-openssl \--enable-http2  \make && sudo make install

       不意外的遇到了問題1,這個問題,百度、必應都沒找到相關的東西,然後問了一些群友,有的人說是因為版本太高的問題,說最適合Swoole 的版本是7.2 版本。

       最終,指向問題本質的回答給了我靈感,大致答案的意思是,從macOs 10.10 以後的版本開始, Mac 自帶的PHP 版本,取消了部分資料夾,也就是說,自帶的PHP 沒有編譯安裝所需的檔案

        知道原因,其實就很好解決了,畢竟我們開發,沒有幾個用自帶環境的,所以,只需要考慮,怎麼將工具使用的PHP 版本,動態到系統環境變量即可。由於以前有設定過系統環境變數路徑,稍微有點映像,就百度了設定環境變數的方法。
其實就是透過.bash_profile 來設定環境變數

但是,你重啟之後,每次都需要在命令列輸入

source ~/.bash_profile

來使之生效,這樣就比較麻煩,我們可以利用Mac 自動載入.zshrc 檔案的機制,把

source ~/.bash_profile

加入到檔案尾,使之每次不需要人工輸入。達到動態設定環境變數的目的。

至此,第一個問題解決。

繼續第二次安裝,然後出現了第二個問題,解決這個問題,就比較繞了。
      其實本質上遇到的問題都是同樣的,都是因為Mac 自帶的軟體,都沒有這個.h 的頭文件,所以才出現這些問題的,第一個問題,透過綁定到工具的變量,實現了變更環境變量,算是取巧的一個處理方法,openssl 這個擴展講道理還是用到的地方很多的,所以就安裝在自己的機器整體環境中。
      在安裝openssl 之前,需要先安裝Xcode ,這一步,我沒有省去,好像在Mac 上好多的環境變量都跟Xcode 文件目錄掛鉤,著實噁心,但是也不能不安裝,安裝完之後,我們再安裝openssl ,命令列輸入

brew install openssl


如果偵測到你的已經存在,會提示你重新安裝可以執行

brew reinstall openssl@1.1


其中有一句,就是让把这个添加到

If you need to have openssl@1.1 first in your PATH run:  echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc

把这个也添加之前修改过的 .zshrc 文件即可。
接下来就是重头戏了。说白了就是简单的粘贴复制,把 openssl 的文件夹,路径为

/usr/local/Cellar/openssl@1.1/1.1.1h/include/openssl

复制到

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

目录下即可
至此,第二个问题解决。

然后再运行编译 Swoole ,等待编译完成就可以了

成果


打完收工!

以上是Mac 編譯安裝 Swoole 遇到 .h 檔案不存在問題解決方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn