PHP のバージョンをphpenv で管理する
初めに
- ソースからビルド・コンパイルする形がめちゃくちゃ不便だったので、phpenvを試してみる
- 構成は Ubuntu14.04 + php-fpm + nginx
- rbenv のようにプロジェクトごとにphp のバージョンを切り替えられる。最初からこれをつかえばよかった。
- ここでは 7.1.7を使う前提
手順
$ cd
$ curl -L https://raw.github.com/CHH/phpenv/master/bin/phpenv-install.sh | bash
$ vi ~/.zshrc
# For PHP Environment export PHP_ROOT="${HOME}/.phpenv" if [ -d "${PHP_ROOT}" ]; then export PATH=${PHP_ROOT}/bin:$PATH eval "$(phpenv init -)" fi
$ source ~/.zshrc
$ mkdir ~/.phpenv/plugins
$ cd ~/.phpenv/plugins
$ git clone git://github.com/php-build/php-build.git
$ cd
$ sudo apt-get install libssl-dev libbz2-dev libcurl4-gnutls-dev libmcrypt-dev libjpeg-dev libtidy-dev libxslt1-dev autoconf
$ sudo apt-get install libicu-dev
※ バージョンによっては必要なし
$ phpenv install 7.1.7
※ postgres 使う場合注意 configure オプション書き換える(後述)
$ phpenv rehash
$ phpenv global 7.1.7
※ 上記でcliの方のバージョンが変わる
$ php -v
PHP 7.1.7 (cli) (built: Jul 19 2017 16:25:39) ( NTS )
$ cp ~/.phpenv/versions/7.1.7/etc/php-fpm.conf.default ~/.phpenv/versions/7.1.7/etc/php-fpm.conf
$ cp ~/.phpenv/versions/7.1.7/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/7.1.7/etc/php-fpm.d/www.conf
※バージョンによっては必要なし
$ vi ~/.phpenv/versions/7.1.7/etc/php-fpm.d/www.conf
- listen = 127.0.0.1:9000 + listen = 127.0.0.1:9001 - user = nobody - group = nobody + user = www-data + group = www-data
※ PHP のバージョンの数に応じて1ずつずらしておけば、バージョン切り替えの際にいちいちNginxの設定ファイルを変更しなくてもよくなるのでおすすめです。
$ sudo cp /tmp/php-build/source/7.1.7/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm-7.1.7
$ sudo chmod 755 /etc/init.d/php-fpm-7.1.7
$ vi ~/.phpenv/versions/7.1.7/etc/php.ini
- ;date.timezone = + date.timezone = "Asia/Tokyo" - mysql.default_socket = - pdo_mysql.default_socket = + mysql.default_socket = /var/run/mysqld/mysqld.sock + pdo_mysql.default_socket= /var/run/mysqld/mysqld.sock
※ 下4行はpostgresのみを使う場合は必要なし
$ sudo service php-fpm-7.1.7 restart
$ sudo vi /etc/nginx/sites-available/sample.com.conf
- fastcgi_pass unix:/usr/local/php-5.3.29/var/run/php5-fpm.sock + fastcgi_pass 127.0.0.1:9001;
$ sudo service nginx restart
Postgres を使う場合
phpenv install するまえに下記を追加しておく
$ vi ~/.phpenv/plugins/php-build/share/php-build/definitions/7.1.7
+ configure_option "--with-pdo-pgsql" + configure_option "--with-pgsql"
因みにインストール後でも大丈夫だった。書き換え後に
$ phpenv install 7.1.7
でpostgres のドライバがインストールされました。(インストールされるまでちょっと時間かかったけど)
もう全バージョンでposgre いれていいよっていう場合は default のconfigureオプション を指定してるファイルがあるのでそっちを書き換える
sudo vi ~/.phpenv/plugins/php-build/share/php-build/default_configure_options
+ --with-pdo-pgsql + --with-pgsql
でOK