PHP 7.3.8。 MacOS Catalina 10.15 上的 ZIP 擴展

PHP 7.3.8。 MacOS Catalina 10.15 上的 ZIP 擴展

我試圖透過自己編譯 ZIP 擴充功能來使用 MacOS Catalina 10.15 中的內建 PHP。

在新的 MacOS Catalina 中,該phpize工具不再可用,因為它內部包含 PHP 庫的無效路徑。該磁碟區/usr以唯讀方式掛載,使得過去使用的所有方法都無效。

我安裝了Xcode 11來自應用程式商店。

然後我創建了另一個phpize引用 Xcode 的方法,將其複製到我的桌面

cp /usr/bin/phpize ~/Desktop/

然後打開它進行編輯vim

vim ~/Desktop/phpize

並將第8行修改如下

includedir = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"

然後,下載了php-7.3.8,MacOS Catalina 10.15 上內建相同的 PHP 版本。

將下載資料夾中的存檔檔案解壓縮後,我打開終端到其資料夾

cd ~/Downloads/php-7.3.8/ext/zip

進入後,啟動自訂的 phpize 以準備 ZIP 副檔名進行配置

~/Desktop/phpize

該擴展現在是可配置的。我啟動了配置,並提供了所需的附加路徑zlib

sudo ./configure --with-zlib-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/

下一步是編譯和安裝,但我仍然收到錯誤php.h file not found

make && make install

或許還有什麼地方走錯了…

答案1

您可以使用CPPFLAGS指向位於內部的make右側:/usr/includeXcode.app

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

make CPPFLAGS="-I${INCLUDE_PATH}/php -I${INCLUDE_PATH}/php/main -I${INCLUDE_PATH}/php/TSRM -I${INCLUDE_PATH}/php/Zend -I${INCLUDE_PATH}/php/ext -I${INCLUDE_PATH}/php/ext/date/lib"

另請注意,編輯時phpize,合法符號 ( ) 周圍不應有空格=

編輯

解決後續評論make install也將失敗,因為它無法將擴展移動到正確的位置。但您仍然需要執行該命令,因為它會對*.so檔案進行簽署。

make install運行後,將可執行檔移至安全的地方。我用/usr/local/php/extensions

例如Xdebug(將.so名稱變更為您的副檔名):

sudo mkdir -p /usr/local/php/extensions
sudo cp $(php-config --extension-dir)/xdebug.so /usr/local/php/extensions

sudo nano /etc/php.ini然後,您透過在底部新增必要的行(不知道 zip 的確切行)來編輯 PHP 配置以啟用您的擴充功能。

完成此操作後,重新啟動內建伺服器以確保:

sudo apachectl restart

相關內容