古いMacにphp入れようとしたら、想像より手間がかかったので作業メモ。
##前提条件
・OS X 10.10.5 Yosemite
##phpenvのインストール
git clone https://github.com/CHH/phpenv.git
cd ./phpenv/bin/
sh phpenv-install.sh
pathを通す。
export PATH="$HOME/.phpenv/bin:$PATH"
eval "$(phpenv init -)"
.bashrcをリロード。
source ~/.bashrc
##php-buildのインストール
git clone https://github.com/CHH/php-build.git ~/.phpenv/plugins/php-build
##phpのインストール
先にビルドで必要なlibをbrewでインストールしておく。
brew install libevent libjpeg libpng mcrypt libtool openssl autoconf libxml2 lemon re2c
見つからないと怒られる。。。
Warning: Bottle installation failed: building from source.
==> Downloading https://downloads.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz
curl: (22) The requested URL returned error: 404 Not Found
Error: Failed to download resource "libevent"
brewを更新。
brew update && rake
今度は権限周りでエラー。
==> Migrated HOMEBREW_REPOSITORY to /usr/local/Homebrew!
Homebrew no longer needs to have ownership of /usr/local. If you wish you can
return /usr/local to its default ownership with:
sudo chown root:wheel /usr/local
rake aborted!
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)
(See full trace by running task with --trace)
権限を変更して再度brewを更新。
再度必要なlibをインストール。
が、またエラー。
Error: openssl 1.0.2e is already installed
To upgrade to 1.0.2n, run `brew upgrade openssl`
Error: Xcode alone is not sufficient on Yosemite.
Install the Command Line Tools:
xcode-select --install
言われた通り、(OSアップデート後にbrewを使うのに必要らしい。)
xcode-select --install
を実行。インストーラ画面が表示されるので、インストール。
終わったら、今度はopensslをアップデート。
brew upgrade openssl
インストール可能なphpのバージョンを確認。
phpenv install -l
今回は最新の7.2.3をビルド、インストールしてみる。
phpenv install 7.2.3
が、opensslが古いと怒られる。
さっき、アップデートしたのに...
-----------------
| BUILD ERROR |
-----------------
Here are the last 10 lines from the log:
-----------------------------------------
configure: WARNING: unrecognized options: --with-mcrypt
configure: WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: 2.3, min: 204, excluded: ).
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
configure: error: OpenSSL version 1.0.1 or greater required.
-----------------------------------------
バージョンを確認してみる。
brew list openssl
/usr/local/Cellar/openssl/1.0.2n/bin/c_rehash
/usr/local/Cellar/openssl/1.0.2n/bin/openssl
/usr/local/Cellar/openssl/1.0.2n/include/openssl/ (75 files)
/usr/local/Cellar/openssl/1.0.2n/lib/libcrypto.1.0.0.dylib
/usr/local/Cellar/openssl/1.0.2n/lib/libssl.1.0.0.dylib
/usr/local/Cellar/openssl/1.0.2n/lib/engines/ (12 files)
/usr/local/Cellar/openssl/1.0.2n/lib/pkgconfig/ (3 files)
/usr/local/Cellar/openssl/1.0.2n/lib/ (4 other files)
/usr/local/Cellar/openssl/1.0.2n/share/man/ (1680 files)
openssl version
OpenSSL 0.9.8zg 14 July 2015
ん?brewのopensslが使われていない。
先人様のお知恵を拝借
PHP_BUILD_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl)" phpenv install 7.2.3
今度はicuがないとのエラー。
configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.
icuをインストール。
brew install icu4c
再度ビルド、インストール。
ビルドにえらい時間かかったが、無事インストール完了!!
##バージョンの確認とか切り替え
インストールされている/使用中のバージョンの確認。
phpenv versions
バージョンの切り替え。
phpenv local XXXX
phpenv global XXXX