homebrew/coreからphp@7.1をインストールするときの覚書です。
homebrew/coreからPHP 7.1をインストールします。
また、peclを使ってextensionを追加します。
homebrew/phpがdeprecatedになり、homebrew/coreへ移動homebrew/coreへの移動にともなって、提供されるPHP 7.1の識別子がphp71からphp@7.1へ変更/usr/local/bin/phpから/usr/local/opt/php@7.1/bin/phpへ変更php.iniの配置ディレクトリは、php@7.1になっても変わらず、/usr/local/etc/php/7.1/php.iniphp@7.1になっても変わらず、/usr/local/etc/php/7.1/conf.dhomebrew/coreが提供するphp@7.1でもextensionの設定ディレクトリは、php71のときと同じ/usr/local/etc/php/7.1/conf.dです。
そのため、既存の設定ファイルを削除していない場合は、それらのextensionを読み込もうとします。
php@7.1でデフォルトで本体に含まれているextensionを読み込もうとすると、エラーが発生します(ext-intl.iniなど)。
/usr/local/etc/phpはphp@7.1のインストールの際に、無ければ作成されるので、バッティングを防ぐ目的で、リネームしておくと良いかもしれません。
| formula | homebrew/php(deprecated) | homebrew/core |
|---|---|---|
| 指定子 | php71 | php@7.1 |
phpコマンド(which php) |
/usr/local/bin/php | /usr/local/opt/php@7.1/bin/php |
| phpコマンドの実体ファイル | /Cellar/php71/7.1.11_22/bin/php | /usr/local/opt/php@7.1/bin/php |
| 設定ファイルディレクトリ | /usr/local/etc/php | /usr/local/etc/php |
設定ファイル(php --ini) |
/usr/local/etc/php/7.1/php.ini | /usr/local/etc/php/7.1/php.ini |
| extensionの設定ディレクトリ | /usr/local/etc/php/7.1/conf.d | /usr/local/etc/php/7.1/conf.d |
| extensionの設定ファイルの例 | /usr/local/etc/php/7.1/conf.d/ext-opcache.ini | /usr/local/etc/php/7.1/conf.d/ext-opcache.ini |
| extensionのsoファイルの例 | /usr/local/Cellar/php71-opcache/7.1.11_16/opcache.so | /usr/local/opt/php@7.1/lib/php/20160303/opcache.so |
$ brew update
$ brew cleanup
$ brew doctor
$ brew install php@7.1
例として、apcu, intl, mcrypt, xdebug, Zend OPcacheをインストールしようと思います。
上記のextensionには、homebrew/coreが提供するPHPでは、本体に含まれたものや、一緒にインストールされるものがあるので、
現時点で目的のextensionがインストールされていないかを確認します。
$ php -m | grep -e intl -e apcu -e mcrypt -e OPcache -e xdebug
// intl
// mcrypt
// Zend OPcache
インストールされていないapcuとxdebugをpeclでインストールします。
いくつか躓きましたが、最終的にはインストールできました。
$ pecl install apcu
下記のエラーが発生して、インストールが失敗しました。
Warning: mkdir(): File exists in System.php on line 294
Warning: mkdir(): File exists in /usr/local/Cellar/php@7.1/7.1.20/share/php@7.1/pear/System.php on line 294
ERROR: failed to mkdir /usr/local/Cellar/php@7.1/7.1.20/pecl/20160303
ディレクトリの作成で失敗しているようなので/usr/local/Cellar/php@7.1/7.1.20ディレクトリを確認してみます。
$ ls -al /usr/local/Cellar/php@7.1/7.1.20
// ...
pecl -> /usr/local/lib/php/pecl
/usr/local/lib/phpに、peclディレクトリがなかったので、作成しました。
$ mkdir /usr/local/lib/php/pecl
再度、peclコマンドを実行すると、apcuをインストールできました。
$ pecl install apcu
//
// ...
//
install ok: channel://pecl.php.net/apcu-5.1.12
Extension apcu enabled in php.ini
xdebugも同様に、インストールできました。
$ pecl install xdebug
peclでインストールしたextensionのsoファイルは、/usr/local/lib/php/peclディレクトリのバージョンに応じたディレクトリへ配置されます。
またphp.iniにも自動で読み込み用の記述が追加されるようです。
zend_extension="xdebug.so"
extension="apcu.so"
ただ本体に含まれるextensionと統一性をもたせるために、/usr/local/etc/php/7.1/conf.dに設定ファイルを作成してもよいかもしれません。
# /usr/local/etc/php/7.1/conf.d/ext-apcu.ini
[apcu]
extension=/usr/local/lib/php/pecl/20160303/apcu.so
/usr/local/lib/php/pecl
|
|-- 20151012 # <-- php@7.0
|
|-- 20160303 # <-- php@7.1
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。