Homebrew에서 php@7.0이 제거되었습니다

오랜만에 노트북을 열고 PHP CLI를 실행하는데 아래와 같은 오류 문구가 보이는 겁니다.

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
Referenced from: /usr/local/Cellar/php@7.0/7.0.31/bin/php
Reason: image not found
[1] 72024 abort /usr/local/Cellar/php@7.0/7.0.31/bin/php

여기를 읽어보면서 PHP를 다시 설치하려고 했죠.

❯ brew reinstall php@7.0
==> Reinstalling php@7.0
Error: An exception occurred within a child process:
FormulaUnavailableError: No available formula with the name "/usr/local/opt/php@7.0/.brew/php@7.0.rb"

음? 이상한데…하면서 지우고 다시 설치하려고 했습니다.

❯ brew install php@7.0

이런 문구가 보이는 겁니다.

php@7.0 was deleted from homebrew/core in commit 7e111a877:
php@7.0 removal due to EOL (https://github.com/Homebrew/homebrew-core/issues/34739)

PHP7.0은 EOL(End Of Life)이 됐으니 Homebrew에서 제거했다는 이야기.

Supported Versions 문서에 의하면,
PHP5.6은 12월 31일, PHP7.0은 12월 3일까지입니다.

얼마 전(12.06)에 PHP7.3 나왔다고 설레발치면서 7.0 지원 종료된 건 못봤나 봅니다. 회사에선 (다른 분들이) PHP 버전업을 준비하고는 있지만, 아직 상용 시스템은 7.0을 사용하는 관계로 노트북의 PHP 버전도 이와 동일하게 구성해놓고 있습니다.

Homebrew에서 PHP@7.0 설치하기

homebrew/core에서 공식 지원하진 않기 때문에 우회해야 합니다.

Homebrew document에 보시면, How to Create and Maintain a Tap에서 비공식 Tap을 관리하는 방법을 안내하고 있습니다. Tap이란 건 online Git repository일 뿐이고, Github에서 Homebrew/homebrew-core 저장소를 참고해서 설치 파일을 올려두면 된다는 것.

그래서 저도 core를 fork해서 7.0이 삭제되기 전 시점으로 돌려놓으면 원하는 rb 파일을 얻을 수 있겠다 생각을 했는데…

reddit에서 PHP 7.0 removed from Homebrew란 글을 읽고 있자니 누군가 먼저 이걸 해결해 놨더군요.

https://github.com/eXolnet/homebrew-deprecated

여기 들어가보시면 7.0.33 버전의 Formula를 얻을 수 있습니다. 곧 같은 배를 타게 될, 5.6 버전도 함께요.

설치해봅니다.

저장소 이름의 homebrew-는 homebrew가 인식하기 위한 prefix니까 떼어버리고, 아래처럼 user/저장소/formula 순으로 지정하면 됩니다.

❯ brew install eXolnet/deprecated/php@7.0

그럼 XDebug도 다시 설치해야 하겠죠? 여기부터는 XDebug를 어떻게 설치했는냐에 따라 다르겠습니다만…

❯ pecl install xdebug

저는 XDebug 설정 파일을 /usr/local/etc/php/7.0/conf.d/ext-xdebug.ini 위치에 따로 분리했는데요. 여기서 모듈 위치를 변경해줬습니다.

zend_extension=/usr/local/Cellar/php@7.0/7.0.33/pecl/20151012/xdebug.so

확인하기.

❯ php -v
PHP 7.0.33 (cli) (built: Dec 14 2018 16:20:36) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.33, Copyright (c) 1999-2017, by Zend Technologies
with Xdebug v2.6.1, Copyright (c) 2002-2018, by Derick Rethans