CakePHP3の環境を、phpbrewで構築する
CakePHP 3.0 から PHP 5.6.0 以降や intl などが必要となっています。
この手の環境構築は phpenv + phpbuild かと思っていたのですが、最近 phpbrew というものを知り、phpbrew を使って環境構築をしました。
その時の行った手順などを紹介します。
なお 、OS は OS X で、必要ライブラリの管理は brew で行い、その brew はインストール済みのものとします。
また、データベースには MySQL を使用します。
環境
OS X
$ sw_vers | grep ProductVersion ProductVersion: 10.12.6
brew
$ brew -v Homebrew 1.3.5 Homebrew/homebrew-core (git revision a996; last commit 2017-10-11)
phpbrewのインストール
https://github.com/phpbrew/phpbrew
にあるとおりです。
$ curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew $ chmod +x phpbrew $ sudo mv phpbrew /usr/local/bin/phpbrew
PHPのビルド前に必要なライブラリをインストール
必要に応じてライブラリをインストールしてください。
手元の環境だと、以下のライブラリのインストールが必要でした。
$ brew install mcrypt $ brew install icu4c $ brew install libxml2 $ brew install gcc
PHP 5.6.31をphpbrewでインストール
$ phpbrew install 5.6.31 +default +intl +mysql
PHP 5.6.31を使ってみる
$ phpbrew use php-5.6.31 $ php -v php -v PHP 5.6.31 (cli) (built: Oct 12 2017 13:51:19) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
ということで PHP 5.6.31 となっています。
composerのインストール
$ phpbrew app get composer
bookmarkerチュートリアルをやってみる
$ https://book.cakephp.org/3.0/en/tutorials-and-examples/bookmarks/intro.html
のとおり、
データベース設定し、Cake3 が利用できるか確認する。
$ cd bookmarker $ ./bin/cake server
ブラウザで確認する。
ブラウザから http://localhost:8765/ にアクセスすると、以下のページが表示され、Cake3 が利用できることを確認しました。
まとめ
以上、Cake3 が動作する環境を、phpbrew で構築しました。
となり、Cake3 が利用できるようなりました。
PHP 5.6.31 を phpbrew でインストールしてみました。
phpbrew install 5.6.31 +default
で libzip を
brew install libzip # configure: error: off_t undefined; check your library configuration phpbrew install 5.6.30 +default -- --with-zlib-dir=`brew --prefix libzip`
トラブルシューティング
C++11が必要
/usr/local/Cellar/icu4c/59.1/include/unicode/unistr.h:3180:7: error: delegating constructors are permitted only in C++11 UnicodeString(Char16Ptr(buffer), buffLength, buffCapacity) {} ^~~~~~~~~~~~~ 2 warnings and 3 errors generated. make: *** [ext/intl/intl_convertcpp.lo] Error 1 Please checkout the build log file for more details: tail /Users/tsmsogn/.phpbrew/build/php-5.6.31/build.log
解決策その
https://github.com/Homebrew/homebrew-core を clone してきて、その中の .git
を /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git を入れ替えたあとで、以下のように
$ git -C "$(brew --repo homebrew/core)" fetch --unshallow $ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core $ git checkout e1b518a22 Formula/icu4c.rb $ brew reinstall icu4c
Ref: https://github.com/Homebrew/homebrew-php/issues/3752#issuecomment-322261319
### libzipが認識されない? PHP 5.6.0 からビルド前に、libzip を指定できるのようですが、それが上手くいきませんでした
configure: error: off_t undefined; check your library configuration
#### 未解決