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チュートリアルをやってみる

Bookmarker Tutorial - 3.x

$ https://book.cakephp.org/3.0/en/tutorials-and-examples/bookmarks/intro.html

のとおり、

データベース設定し、Cake3 が利用できるか確認する。

$ cd bookmarker
$ ./bin/cake server

ブラウザで確認する。

ブラウザから http://localhost:8765/ にアクセスすると、以下のページが表示され、Cake3 が利用できることを確認しました。

f:id:ekzm:20171012162551p:plain

まとめ

以上、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

#### 未解決