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 也可以正常安裝。