LoginSignup
0
1

More than 5 years have passed since last update.

phpbrewのphpをユーザ間で共有する

Last updated at Posted at 2017-05-03

やりたいこと

  • phpbrewを使って、複数バージョンのPHPをインストールして、各ユーザで共有できるようにしたい。(ユーザ毎にインストールしなくていいようにしたい)

やり方概要

.phpbrewを~/.phpbrewではなく、/opt/phpbrewに置くことでユーザ毎にインストールしないでいいようにした。

環境

  • Ubuntu 16.10
  • シェルはzsh

phpbrewのインストール

$ curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
$ chmod +x phpbrew
$ sudo mv phpbrew /usr/local/bin/phpbrew

初期設定

phpbrewの初期化

$ sudo -i
$ mkdir -p /opt/phpbrew
$ phpbrew init --root=/opt/phpbrew

これで/root/.phpbrewが作成されます。.phpbrew内は下記のようになります。

├── bashrc
├── build/
├── .metadata_never_index
├── php/
└── phpbrew.fish 

zshの設定

$ cd
$ vim .zshrc

下記を.zshrcに追加します。

[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc

sourceします。

$ source .zshrc

.phpbrew/initの作成

$ vim .phpbrew/init

.phpbrew/initを作成して下記1行を書きます。

export PHPBREW_ROOT=/opt/phpbrew

.phpbrew/bashrcをsourceします。

$ source .phpbrew/bashrc

phpをインストール

php-5.6.30をインストール

$ phpbrew -d install 5.6.30 +default +dbs +mb +fpm +debug +cgi +hash +json

これで/opt/phpbrew内に作成されます。

$ tree -aF -L 2 /opt/phpbrew
/opt/phpbrew
├── build/
│   └── php-5.6.30/
├── distfiles/
│   └── php-5.6.30.tar.bz2
├── .metadata_never_index
├── php/
│   └── php-5.6.30/
├── php-releases.json
└── register/

php-7.1.4をインストール

$ phpbrew -d install --stdout 7.1.4 like php-5.6.30 

-dはデバッグモードで、インストール中の処理内容が出力されます。通常だと途中の細かい内容はログファイルに出力されますが、--stdoutとすることで、標準出力に出力されます。また、likeを使うことで、php-5.6.30のvariantsを適用できます。

追記:どうもlikeでインストールしたらfpmがなかったので、like使わずにインストールした方がいいかもです。

標準バージョンを7.1.4にする

$ phpbrew list
* (system)
  php-7.1.4
  php-5.6.30
$ phpbrew switch php-7.1.4
$ php -v
PHP 7.1.4 (cli) (built: May  3 2017 06:55:49) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

ユーザ間共有設定

上記までやれば、とりあえずPHPは入るので、Nginxで使う場合とかは、各バージョンのphp-fpmを使う設定にすればいいだけなのかなと思った。下記はCLIでユーザ毎に個別に切り替えたい場合にやればいいのかなと思った。試行錯誤中にせっかくやったのでメモです。

/opt/phpbrew/bashrcを作成

$ cp /root/.phpbrew/bashrc /opt/phpbrew/bashrc

/etc/profile.d/phpbrewを作成

$ vim /etc/profile.d/phpbrew.sh
/etc/profile.d/phpbrew.sh
export PHPBREW_ROOT=/opt/phpbrew
source /opt/phpbrew/bashrc

zprofileを編集

$ vim /etc/zsh/zprofile

zprofileの中身。/etc/profileの中身の一部をコピペする。bashの場合、~/.bashrcの前に、/etc/profileによって、/etc/profile.d/*.shが全て実行されるが、zshだと実行されないので、zprofileに同じことを書いて実行してもらえるようにする。

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

ついでにEDITORも登録しておく

$ vim /etc/zsh/zshenv

下記を書くと、phpbrew configなどで開くエディタがvimになる。

export EDITOR=vim

これで、誰もがzshでログインしたときに、zprofileが動いて、zprofileが/etc/profile.d/phpbrew.shを動かして、PHPBREW_ROOTを設定した上で、phpbrew/bashrcをsourceするので、phpbrew initしてなくても、/opt/phpbrewを使ったphpbrewの利用ができるようになったはず!確かにどのユーザでも、phpbrew listとかは正常に動く。phpbre useとかは、/opt/phpbrewがroot権限だから、sudo権限ない人は切り替えられない。/opt/phpbrewの権限を変えることで調整は可能なのかなと思いました。

参考:system-wide環境のPHPBrewインストール

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1