Movatterモバイル変換


[0]ホーム

URL:


LoginSignup
58

Go to list of users who liked

56

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ubuntu に phpenv を入れて複数バージョンのPHP管理しようとした

Last updated atPosted at 2013-04-17

brew の場合は楽そうなかんじなのに、Ubuntu だとわりと手間取った。

Ubuntu で phpenv 入れてる詳しい説明は少なそうだったので、同じところでつまづいてる人用に共有してみます。

基本的にデザインとフロント担当なのでお前は何を言っているんだ的なところがあったら教えてください。

やりたいこと

  • 手軽に PHP のバージョンを切り替える開発環境を作りたい
    • 引き継いだレガシー案件に古いPHPバージョン依存のコードがあったので

Install

1. Install phpenv

PHPのバージョン切り替えたりするやつです。

# Install phpenv$cd ~$git clone https://github.com/CHH/phpenv.git ~/.phpenv$sh ~/.phpenv/bin/phpenv-install.sh

2. Install php-build

PHPビルドするやつです。

# Install php-build$git clone git://github.com/CHH/php-build.git$cdphp-build/$sudopaco-D sh install.sh# paco を好みで使う$which php-build/usr/local/bin/php-build$rm-rf php-build

php-build インストール時にどこにどんなファイルが配置されたか記録しておくために、paco を使っています。使っても使わなくてもいいやつです。

3. path 設定

~/.zshrc
# rbenv & phpenv# .rbenv ディレクトリが home にあればパスを通す# phpenv は rbenv を内部利用しているので先に rbenv に PATH を通すif[-d$HOME/.rbenv/bin];thenexportPATH="$PATH:$HOME/.rbenv/bin"eval"$(rbenv init -)"if[-d$HOME/.phpenv/bin];thenexportPATH="$PATH:$HOME/.rbenv/bin:$HOME/.phpenv/bin"eval"$(phpenv init -)"fifi

php-build で PHP をビルドする

1. インストール可能なバージョン一覧の表示

$php-build--definitions5.2.175.3.105.3.11   :5.5.0beta15.5.0beta25.5snapshot

2. 依存パッケージのインストール

PHPビルド時にパッケージが足りないようなので、トライアンドエラーで、言われるままに大量にインストールする。

  • libcurl4-gnutls-dev
  • libcurl4-nss-dev
  • libcurl4-gnutls-dev
  • libpng3 libjpeg-dev
  • re2c
  • libxml2-dev
  • openssl-dev
  • libtidy-dev
  • libxslt-dev
  • libmcrypt-dev
  • libreadline-dev

今回は上のリストを全てインストール。

$sudoaptitudeinstalllibcurl4-gnutls-dev libcurl4-nss-dev libcurl4-gnutls-dev libpng3 libjpeg-dev re2c libxml2-dev openssl-dev libtidy-dev libxslt-dev libmcrypt-dev  libreadline-dev

3. apxs2 の用意

debian/ubuntu の場合、 さらにapxs2 コマンドを使えるようにしておかないと、
PHPビルド時にlibphp5.so を作成できないぽいので入れる。

$apache2-VServer version: Apache/2.2.22(Ubuntu)     :Server MPM:     Prefork     :

Server MPM の値がPrefork だった場合、apache2-prefork-dev
worker の場合、apache2-threaded-dev が必要。

$sudoaptitudeinstallapache2-prefork-dev

PHPビルド時の設定にlibphp5.so を作成するオプションを追記。

default_configure_options--enable-fpm がある場合は削除しておく。
このあたりは、CLI版, CGI版 どちらでビルドするかで変わるぽい。

$which apxs2/usr/bin/apxs2$sudovim /usr/local/share/php-build/default_configure_options     :--with-apxs2=--with-apxs2=/usr/bin/apxs2# << 追記

4. libphp5.so のバックアップ

PHPビルド時に、libphp5.so が上書きされるため、現在のバージョンのものをバックアップする。

$mkdir ~/.phpenv/versions/CURRENT_PHP_VER/$mv /usr/lib/apache2/modules/libphp5.so ~/.phpenv/versions/CURRENT_PHP_VER/

5. PHP のビルド, インストール

phpenv で管理できるようにするため、~/.phpenv/versions をインストール先として
指定する。

$php-build 5.3.19 ~/.phpenv/versions/5.3.19[Info]: Loaded apc Plugin.[Info]: Loaded pyrus Plugin.[Info]: Loaded xdebug Plugin.[Info]: Loaded xhprof Plugin.[Info]: php.ini-production gets used as php.ini[Info]: Building 5.3.19 into /home/qurage/.phpenv/versions/5.3.19[Skipping]: Already downloaded and extracted http://downloads.php.net/johannes/php-5.3.19.tar.bz2[Preparing]: /tmp/php-build/source/5.3.19[Compiling]: /tmp/php-build/source/5.3.19[Pyrus]: Downloading from http://pear2.php.net/pyrus.phar[Pyrus]: Installing executablein /home/qurage/.phpenv/versions/5.3.19/bin/pyrus[XDebug]: Downloading http://xdebug.org/files/xdebug-2.2.1.tgz[XDebug]: Compilingin /tmp/php-build/source/xdebug-2.2.1[XDebug]: Installing XDebug configurationin /home/qurage/.phpenv/versions/5.3.19/etc/conf.d/xdebug.ini[XDebug]: Cleaning up.[Info]: The Log File is not empty, but the Build did not fail. Maybe just warnings got logged. You can review the login /tmp/php-build.5.3.19.20130409111047.log[Success]: Built 5.3.19 successfully.

phpenv からビルドしたPHPが正しく認識されているか確認。

$phpenv versions* system(setby /home/qurage/.phpenv/version)  5.3.19

libphp5.so はPHPをビルドするたびに上書きされるため、
バージョンごとに移動・保存しておく。

$sudo cp /usr/lib/apache2/modules/libphp5.so ~/.phpenv/versions/5.3.19/

PHP バージョン切り替え

$phpenv global 5.3.19$phpenv versions  system* 5.3.19(setby /home/qurage/.php-version)$phpenv rehash

Apache 側の設定

phpenv でバージョン切り替えしただけでは、Apache 側には未適用なので、phpenv-apache-version プラグインを利用する。

$git clone https://github.com/garamon/phpenv-apache-version .phpenv/plugins/phpenv-apache-version/$sudo /home/qurage/.phpenv/bin/phpenv apache-version 5.3.19

phpinfo(); などで Apache 側の動作確認。

php.ini 設定

~/.phpenv/versions/5.3.19/etc/php.ini
[Date]; Defines the default timezone used by the date functions; http://php.net/date.timezonedate.timezone=Asia/Tokyo:; Default socket name for local MySQL connects.  If empty, uses the built-in; MySQL defaults.; http://php.net/pdo_mysql.default-socketpdo_mysql.default_socket=/var/run/mysqld/mysqld.sock:; Default socket name for local MySQL connects.  If empty, uses the built-in; MySQL defaults.; http://php.net/mysql.default-socketmysql.default_socket=/var/run/mysqld/mysqld.sock:; Default socket name for local MySQL connects.  If empty, uses the built-in; MySQL defaults.; http://php.net/mysqli.default-socketmysqli.default_socket=/var/run/mysqld/mysqld.sock

mysql の socket パスは適宜変更する必要がある。

  • Ubuntu ⇒ /var/run/mysqld/mysqld.sock
  • CentOS ⇒ /tmp/mysql.sock

あとがき

なかなか大変でした。

参考にしたサイト

  1. phpenv で複数の PHP 環境を管理する - Born Too Late
  2. Ubuntu 9.0.4 へ PHP5.3.0 動作環境を作る - 気が向いたら
  3. Hunting Field: もう一度php-5.3.8を入れる
58

Go to list of users who liked

56
0

Go to list of comments

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
58

Go to list of users who liked

56

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?


[8]ページ先頭

©2009-2025 Movatter.jp