karakaram-blog

MacにphpbrewでPHP7をインストールした

 ツイート 3  シェア 0  Google+1 0  Hatena 3

Macにphpbrewでphp7をインストール

Mac に phpbrew で PHP7 をインストールした時のメモです。私の環境ではマニュアルの通りにやってもインストールできなかったので、遭遇した問題と、その解決方法も書いておきます。

動作確認環境

  • OS X El Capitan
  • phpbrew 1.21.6

目次

  1. phpbrew をインストールする
  2. PHP7 をインストールする
  3. エラー発生
  4. オプションを設定してみたら動いた
  5. PHP-FPM を設定

phpbrew をインストールする

公式ドキュメント に従い、phpbrew をインストールしておきます。このブログで以前書いた記事 MacでのPHP開発はphpbrewが非常に良い も参考になると思います。

PHP7 をインストールする

以下のコマンドで PHP7 をインストールします。MySQL や PHP-FPM も利用するので variants も指定します。

$ phpbrew install 7.0.6 +default +mysql +fpm +opcache +intl +iconv

エラー発生

tail -F ~/.phpbrew/build/php-7.0.6/build.log で configure の結果をぼんやり眺めていると、途中でエラーが出て止まってしまいました。

エラー内容は以下の通り。なにこれ。

configure: error: invalid readline installation detected. Try --with-libedit instead.

ググってみても、同じ問題に遭遇している人が見当たりません。Homebrew を最新版にしたり、readline や libedit、その他インストールされているパッケージを全部最新版に更新しても効果なし。ちなみに 5.6 でも同じエラーで止まりました。

オプションを設定してみたら動いた

ふとエラーメッセージをよく見てみると、Try --with-libedit instead. の文字。with なんとかって configure オプションっぽいので、phpbrew で configure オプションを設定する方法を調べました。

phpbrew/README.md -Extra Configure Options-

ここを見ながら以下のように --with-libedit オプションを指定してみると、Configure が通り、ビルドに成功しました。

$ phpbrew install 7.0.6 +default +mysql +pdo +fpm +opcache +intl +iconv -- --with-libedit

PHP-FPM を設定

あとやったことは基本的には MacでのPHP開発はphpbrewが非常に良い -PHP 拡張をインストールする- から先に書いてあることと同じ。PHP 拡張いくつか入れて、Nginx, PHP-FPM 設定して。PHP のバージョンを 5.6 から 7 に置き換えれば大丈夫です。PHP 拡張は PHP7 に対応していないものがあるみたいなので、配布元を確認しましょう。

なお PHP-FPM の設定ファイルの場所が ~/.phpbrew/php/php-7.0.6/etc/php-fpm.d に変わってたので、そこだけ書いておきます。以下のようにデフォルトのファイルのバックアップを取っておいて、内容を書き換えました。

$ cd ~/.phpbrew/php/php-7.0.6/etc/php-fpm.d
$ cp www.conf.default www.conf
$ vi www.conf

www.conf の変更点は以下のとおり。

  • 実行ユーザはログインユーザにしたいので、user, group の設定をコメントアウト
  • unix ソケットの PATH は nginx に書いたものと同じ
  • 子プロセスは 1 個
  • メモリリーク対策に pm.max_requests を設定
  • catch_workers_output = yes を設定し、php.ini で指定した error_log にエラーが出力されるように
;user = nobody
;group = nobody

listen = /Users/karasawa/.phpbrew/php/php-7.0.6/var/run/php-fpm.sock
listen.mode = 0664
listen.allowed_clients = 127.0.0.1

pm = static
pm.max_children = 1
pm.max_requests = 500

catch_workers_output = yes

まとめ

Mac に PHP7 をインストールする方法を紹介しました。半年前に PHP5.6 をインストールしたときはこんなエラー出なかったのですが、何か変わったんでしょうか。マニュアルにはこのエラーと解決方法は載っていなかったので、特定の環境でしか発生しないかもしれません。ちなみに PHP5.6.21 のインストールでも同じエラーで止まりました。同様の現象に悩んでいる方の参考になれば。

 ツイート 3  シェア 0  Google+1 0  Hatena 3