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.ini
php@7.1
になっても変わらず、/usr/local/etc/php/7.1/conf.d
homebrew/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.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。