我試圖透過自己編譯 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/include
Xcode.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