Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
最近參與了朋友的開發專案,在專案中需要使用 Composer 來安裝相依套件。
但是在執行 composer install
後,系統出現以下的錯誤訊息:
Problem 1 - phpoffice/phpspreadsheet is locked to version 1.17.1 and an update of this package was not requested. - phpoffice/phpspreadsheet 1.17.1 requires ext-zip * -> it is missing from your system. Install or enable PHP's zip extension.
顯然是我的 PHP 中缺乏了 zip 的擴充套件。
因為使用的本地開發環境是透過 MAMP PRO 建立,因此特別查了一下 MAMP Pro 的解決方法。根據官方的做法,你需要前往 MAMP 的編譯檔目錄中,前往特定的 PHP 版本,透過 pecl
來進行安裝。
cd /Applications/MAMP/bin/php/php{{PHP 版本}}/bin ./pecl install zip # 將 extension=zip 寫入組態檔 cd /Applications/MAMP/conf/php{{PHP 版本}}/ echo "extension=zip" >> php.ini
最後兩行可以透過 MAMP Pro 的介面 [File] > [Open Template] > [PHP (php.ini)] > {{PHP 版本}} 取代。完成設定後重啟 MAMP 的伺服器。
php
指令經過上述步驟後,重新執行 composer install
仍然會顯示缺少擴充的訊息。因此透過 php -i | grep zip
來檢查,發現 PHP info 中並沒有剛才安裝套件的影子,於是進一步檢查:
which php
結果顯示的是
/usr/bin/php
因為 composer
會去使用預設的 php
指令,因此即使 MAMP 這邊安裝完套件,仍然無法套用。因此還需要透過修改 bash 組態 (.bash_profile
或 .zshrc
) 的方式,將 php
指令指向 MAMP PRO。
vim ~/.zshrc # vim ~/.bash_profile
於適當的位置插入 export
指令:
# Using MAMP PRO's php export PATH=/Applications/MAMP/bin/php/php{{PHP 版本}}/bin:$PATH
接著將組態套用到系統中。
source ~/.zshrc # source ~/.bash_profile
此時再執行 which php
就會顯示 MAMP PRO 的路徑。再次執行 composer install
也可以正常安裝。