Edited at

macOSのアップグレードで動作しなくなったphpenvのphpを復活させる


条件


  • anyenvでphpenvをインストール済

  • OSをSierraからHigh Sierraにアップグレード


phpコマンドのエラー

アップグレード完了後、ターミナルからいつも通りphpコマンドを叩いてみる。

$ php

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.59.dylib
Referenced from: /Users/USERNAME/.anyenv/envs/phpenv/versions/7.1.8/bin/php
Reason: image not found
Abort trap: 6

icu4cのライブラリがロードされないとかで動作しなくなってしまった。


アンインストール〜再インストール失敗

ググってもphpenv関連で同じエラーが見つけられなかったため、一旦アンインストールする。

$ phpenv uninstall 7.1.8

Are you sure you want to remove version ‘7.1.8’? [y/N]: y
Version ‘7.1.8’ (/Users/USERNAME/.anyenv/envs/phpenv/versions/7.1.8) successfully removed.

再度phpenvで同じバージョンのphpをインストールする。

$ phpenv install 7.1.8

[Info]: Loaded extension plugin
[Info]: Loaded apc Plugin.
[Info]: Loaded composer Plugin.
[Info]: Loaded github Plugin.
[Info]: Loaded uprofiler Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: Loaded zendopcache Plugin.
[Info]: php.ini-production gets used as php.ini
[Info]: Building 7.1.8 into /Users/USERNAME/.anyenv/envs/phpenv/versions/7.1.8

-----------------
| BUILD ERROR |
-----------------

#ビルドエラー発生、ログを確認する。

$ vi /tmp/php-build.7.1.8.20180105145726.log

configure: error: in `/var/tmp/php-build/source/7.1.8':
configure: error: C compiler cannot create executables
See `config.log' for more details

Cのコンパイラが実行できないようなので、gccをチェックする。どうもXcodeのコマンドラインツールのパスが通っていないらしい。

$ gcc

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun


xcode-selectを再インストールして再挑戦

xcode-selectを再インストールしてgccを使えるようにする。

$ xcode-select --install

$ gcc
clang: error: no input files

phpenvで再度phpをインストールする。

$ phpenv install 7.1.8

[Info]: Loaded extension plugin
[Info]: Loaded apc Plugin.
[Info]: Loaded composer Plugin.
[Info]: Loaded github Plugin.
[Info]: Loaded uprofiler Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: Loaded zendopcache Plugin.
[Info]: php.ini-production gets used as php.ini
[Info]: Building 7.1.8 into /Users/USERNAME/.anyenv/envs/phpenv/versions/7.1.8

# (略)

[Success]: Built 7.1.8 successfully.

#インストール成功

$ phpenv versions
system
* 7.1.8 (set by /Users/USERNAME/.anyenv/envs/phpenv/version)

phpコマンドが使えるようになった。

$ php -v

PHP 7.1.8 (cli) (built: Jan 5 2018 15:31:20) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.1.8, Copyright (c) 1999-2017, by Zend Technologies
with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans