개발을 하며 필요한 패키지가 있어서 개발서버에 추가한뒤에 composer install -vvv(상세명령줄 표시 옵션)을 했더니 아래와 같은 상태에서 계속 머물고 있었다.
그래서 다음날 출근하면 업데이트가 되있겠지 하고 실행 뒤 퇴근을 했다.
...
Writing /Users/kimkit/.composer/cache/repo/https---packagist.phpcomposer.com/provider-symfony$config.json into cache
Reading /Users/kimkit/.composer/cache/repo/https---packagist.phpcomposer.com/provider-twig$twig.json from cache
Downloading https://packagist.phpcomposer.com/p/symfony/dependency-injection%24e9e53dff253d1184e7bed2edf20a122b484fe8c45fede4be74fd982f57049516.json
Writing /Users/kimkit/.composer/cache/repo/https---packagist.phpcomposer.com/provider-symfony$dependency-injection.json into cache
Resolving dependencies through SAT
다음날. 아래와 같은 오류로 메모리 부족으로 오류가 나타나있었고 install은 실패했었다.
개발 서버의 경우 1G RAM 을 사용하는데 메모리가 부족해서 나타난 오류였다.
Writing /root/.cache/composer/repo/https---packagist.org/provider-drupal$core.json into cache
Downloading http://packagist.org/p/drupal/drupal%24d907fab6efba69fccfb9c69ad5b6680a7b2cde0784e1509580381bbd43e12fb8.json
Writing /root/.cache/composer/repo/https---packagist.org/provider-drupal$drupal.json into cache
Resolving dependencies through SAT
Dependency resolution completed in 45971.970 seconds
Analyzed 52523 packages to resolve dependencies
Analyzed 2003744 rules to resolve dependencies
- Removing symfony/polyfill-ctype (v1.12.0)
The following exception is caused by a lack of memory and not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details
[ErrorException]
proc_open(): fork failed - Cannot allocate memory
구글링을 하며 여러 방법을 찾아보고 시도해보았다.
1. composer clear-cache 후 install -> 실패
2. php memory limit 해제 -> 실패
- 아래와 같은 명령어를 치고 나오는 메모리를 확인해본다. 아니면 php.ini 파일을 찾아서 memory limit을 확인해본다.
php -r "echo ini_get('memory_limit').PHP_EOL;"
- 나의 경우 /etc/php/7.4/cli/php.ini 확인해보니 -1값은 무제한으로 제한이 풀어져있었다.
- 해당 값이 낮을 경우 올려서 해보면 해결될 수도 있다.
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = -1
3. local에서 composer를 install하여 생성된 composer.lock을 올려서 install -> 성공
- composer의 경우 install을 할때 composer.json을 해석하여 의존성 주입을 마친 composer.lock을 생성한다.
그리고 composer.lock 파일이 있을 경우 composer.json 해석하는 과정을 건너띄게 되므로 메모리 사용이 현저히 적어진다.
- 해당 부분에서 주의할 점은 로컬환경과 개발서버환경의 php 버전과 composer 버전이 동일해야 별다른 이슈가 없이 install이 마무리 될 것이다.
- 추가적으로 composer의 버전은 최신것을 사용하는 것이 빠르고 좋다고 했다.
composer --version #버전체크
composer self-update #최신 버전 사용(1.0.0 버전에서는 먹히지 않았다.)
'Web > PHP' 카테고리의 다른 글
[ Laravel ] Log 폴더 소유자 변경 permission Denied 문제 (0) | 2020.02.12 |
---|---|
[ Laravel ] paginate 에 현재 쿼리 스트링 첨부하기 (1) | 2020.01.22 |
[ Laravel ] 라온 보드 설치시 preg_match 오류 해결 (1) | 2020.01.02 |
[ Laravel ] DB Log 출력하기 (0) | 2019.11.18 |
[ Codeigniter ] 에러 출력하기 (0) | 2019.11.18 |
댓글