Visual Code Studio で PHPDebug を利用するには PHP7 を入れておく必要があるのですが、ローカルでバージョンを振り分けられるようにしたかったので anyenv からインストールしていこうと思ったらハードルが想定外に高かったのでまとめました。
この記事で書かれていること
- anyenv から PHP7 をインストールするまでの流れ
この記事で割愛されていること
- anyenvの説明
- phpenvの説明
- homebrewの説明、利用方法
Visual Studio Code でPHPコードのデバッグをするまでに必要な手順。
anyenv
$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.your_profile
$ echo 'eval "$(anyenv init -)"' >> ~/.your_profile
$ exec $SHELL -l
phpenv
$ anyenv install phpenv
注意点は、php-builidとphpenv-composerも一緒にインストールされること。場所は以下の通り。
~/.anyenv/envs/phpenv/plugins
インストールできるPHPバージョンを確認。
$ phpenv install --list
インストールするために必要なものを入れておく。
$ brew install openssl libxml2 mcrypt gcc re2c libmcrypt autoconf automake libiconv
ちゃんとインストールされているか確認。ここはopenssl、libxml2、mcryptを対象に。
$ echo -e "--with-openssl=$(brew --prefix openssl)\n--with-libxml-dir=$(brew --prefix libxml2)\n--with-mcrypt=$(brew --prefix mcrypt)"
--with-openssl=/usr/local/opt/openssl
--with-libxml-dir=/usr/local/opt/libxml2
--with-mcrypt=/usr/local/opt/mcrypt
rbenv
Ruby 2.3 が必要だと言われるのでインストール。ruby-buildも一緒にインストールされる。
$ anyenv install rbenv
$ exec $SHELL -l
$ rbenv install 2.3.5
ビルドオプションを利用してphpenvからインストールしてみる
PHP_BUILD_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl) --with-libxml-dir=$(brew --prefix libxml2)" PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j4 phpenv install 7.0.24
しかし以下のエラーでインストールできない。
ld: file not found: /usr/lib/system/libsystem_darwin.dylib for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Xcodeのバグらしい
以下の記事を参考にして対処。
https://qiita.com/mk2/items/932105d0633feb2f3d37
サンプルの10.12を10.13に変更して実行。
sudo /usr/bin/sed -i.backup -E -e 's@/usr/lib/system/libsystem_symptoms.dylib(, )?@@' \
$(grep -ril /usr/lib/system/libsystem_symptoms.dylib \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib)
しかし改善せず。
さらに調べて参考を発見。こちらの対処方法を試してみる。
https://qiita.com/grohiro/items/a5f2ccd8a4c8ca8ac7d8
最終のphpenvによるインストールコマンド
すごいことになった。
$ PHP_BUILD_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl) --with-libxml-dir=$(brew --prefix libxml2)" PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j4 LDFLAGS="-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/system" phpenv install 7.0.24