PHPのインストール : PHP

Pocket

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へ変更
  • phpコマンドのインストール先は、/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
  • extensionの設定ディレクトリは、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/phpphp@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

PHPインストール

$ brew install php@7.1

extensionインストール

例として、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

インストールされていないapcuxdebugpeclでインストールします。

いくつか躓きましたが、最終的にはインストールできました。

$ 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でインストールしたextensionsoファイルは、/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.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。