Composer 跑到記憶體不足問題解法
前言
近期發現在使用 Composer 時,都會跑到
PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted <...>
於是上網找了一些資料,這邊做個整理
記憶體用去哪了
在下指令時,補上 -vvv
可以看到執行過程,例如:
composer install -vvv
(不過在 mac 好像不會 show memory 用了多少,在 centos 裏面記得是有 show)
解法 1 - 改 php.ini
追加以下設定到 php.ini
中 (
出處
):
; Use -1 for unlimited or define an explicit value like 2G
memory_limit = -1
不推薦此做法,這樣本地整個環境的 php 都會被影響。
解法 2 - 透過 php 指令加大記憶體
透過 php
宣告,臨時加大記憶體配置,例如:
php -d memory_limit=-1 composer.phar <...>
個人不使用此做法,與平常直接使用 composer
習慣有差,還要多打 php -d ...
。
解法 3 - 透過 composer 指令加大記憶體 (推)
透過 composer
宣告,臨時加大記憶體配置,例如:
COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>
再次別名 (以 Mac 為例)
可透過 aliases
再次別名,讓記憶體加大這件事不用每次打,例如:
echo "alias composer=\"COMPOSER_MEMORY_LIMIT=4G composer\"" >> ~/.aliases
重開終端機,即可正常使用:
composer install <...> # 這樣下記憶體已經加大過了
最後
- 前述解法中提到的
composer.phar
若有設置過軟連結,則改為composer
- 臨時加大的記憶體,不要設置成
-1
(開到最大),我通常設定成4G
(夠用就好),例如COMPOSER_MEMORY_LIMIT=4G composer <...>
,避免記憶體爆掉
有任何問題或想法,歡迎留言交流,如果寫的內容有錯誤的地方,希望能不吝指點,感謝。
參考連結
文章作者: littlebookboy
永久鏈結: https://littlebookboy.github.io//2021/06/how-to-solve-memory-issue-when-using-composer/
許可協議: 署名-非商業性使用-相同方式共享 4.0 國際(CC BY-NC-SA 4.0)