- 更新日: 2013年8月2日
- CentOS & Linux
phpenv と php-build で PHP をインストールして管理 〜 CentOS6
複数のPHPバージョンをインストールして管理したいので、phpenv + php-build の環境を先に作ります。全ユーザーで使えるようにしたいので、/usr/local にインストールします(システムワイドにインストール)。作業はrootにて。
まず、/usr/local/src に github から phpenv を取ってきます。
1 2 3 4 |
# cd /usr/local/src # git clone https://github.com/CHH/phpenv.git phpenv |
このエントリーは、CentOS 6.4 インストール~設定手順の目次 の一部です。
phpenv をシステムワイドにインストール、また rbenv と併用するための前準備
デフォルトの phpenv のインストールスクリプト /usr/local/src/phpenv/bin/phpenv-install.sh を眺めたところ、
1 2 3 4 5 6 7 8 |
# vi /usr/local/src/phpenv/bin/phpenv-install.sh ... /PHPENV_ROOT if [ -z "$PHPENV_ROOT" ]; then PHPENV_ROOT="$HOME/.phpenv" ... |
というコードがありますので、$PHPENV_ROOT がセットされてなければ $HOME/.phpenv に phpenv がインストールされることになる。なので、あらかじめ rbenv インストール時に設定したファイル /etc/profile.d/rbenv.sh に $PHPENV_ROOT のパスを設定しておきます。
また phpenv 公式ページ に、rbenv ユーザー向けの注意が書いてある。
1 2 3 4 5 6 |
-------------------------------------------------- IMPORTANT NOTES For rbenv users: Make sure that ~/.rbenv/bin takes precedence in the PATH over ~/.phpenv/bin by placing it before, so rbenv gets used from ~/.rbenv. -------------------------------------------------- |
PATHの設定で、~/.rbenv/bin のパスが ~/.phpenv/bin のパスより前に来るようにしてね、と注意されています。
以上を踏まえて、私は rbenv の環境変数の設定の前に phpenv の設定を書きました。これで環境変数 PATH は、/usr/local/rbenv/bin:/usr/local/phpenv/bin:…となり、rbenv/bin が phpenv/bin の前に来ます。
1 2 3 4 5 6 7 8 9 10 11 12 |
# vi /etc/profile.d/rbenv.sh # phpenv export PHPENV_ROOT="/usr/local/phpenv" export PATH="$PHPENV_ROOT/bin:$PATH" #eval "$(phpenv init -)" # phpenvのインストール後に有効にする。 # rbenv export RBENV_ROOT="/usr/local/rbenv" export PATH="$RBENV_ROOT/bin:$PATH" eval "$(rbenv init -)" |
パスを読み込む。
1 2 3 |
# source /etc/profile.d/rbenv.sh |
$PHPENV_ROOT, $PATH の確認。$PATH が /usr/local/rbenv/bin:/usr/local/phpenv/bin:…の順序になっていることを確認する。
1 2 3 4 5 6 |
# echo $PHPENV_ROOT /usr/local/phpenv # echo $PATH /usr/local/rbenv/bin:/usr/local/phpenv/bin:/usr/local/phpenv/bin:/usr/local/rbenv/bin:/usr/local/phpenv/bin:/usr/local/rbenv/bin:/usr/local/rbenv/shims:/usr/local/rbenv/bin:/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin |
phpenv のインストール
では続いて、/usr/local/phpenv に phpenv をインストールする。
1 2 3 4 5 6 7 8 9 10 11 |
# cd /usr/local/src/phpenv/bin # sh /usr/local/src/phpenv/bin/phpenv-install.sh ... Success. export PATH="/usr/local/phpenv/bin:$PATH" eval "$(phpenv init -)" Add above line at the end of your ~/.bashrc and restart your shell to use phpenv. |
と表示されたらOKです。PATHを追加するようにメッセージが出ていますね。デフォルトでは、~/.bashrc に書くように指示されていますが、今回はシステムワイドに phpenv を利用するために、前述したとおり /etc/profile.d/rbenv.sh に設定しておいたわけです。
これで phpenv がインストールできたので、phpenv コマンドが有効になります。先ほど一旦コメントアウトしていた、/etc/profile.d/rbenv.sh の eval “$(phpenv init -)” の行を有効にします。
1 2 3 4 5 6 7 8 9 10 11 12 |
# vi /etc/profile.d/rbenv.sh # phpenv export PHPENV_ROOT="/usr/local/phpenv" export PATH="$PHPENV_ROOT/bin:$PATH" eval "$(phpenv init -)" # 有効にする。 # rbenv export RBENV_ROOT="/usr/local/rbenv" export PATH="$RBENV_ROOT/bin:$PATH" eval "$(rbenv init -)" |
/etc/profile.d/rbenv.sh を読み込み直しておく。
1 2 3 |
# source /etc/profile.d/rbenv.sh |
グループの設定とアクセス権の設定。rbenv インストールの時に作った rbenv グループに所属させておきます。
1 2 3 4 5 |
# cd /usr/local # chgrp -R rbenv phpenv # chmod -R g+rwxXs phpenv |
php-build のインストール
続いて、php-build をインストール。phpenv の plugin として php-build を入れます。
virtualbox(centos)でphpenv+php-buildインストールメモ(5.3,5.4変更確認まで) – Qiita [キータ]
php-buildをphpenvのプラグインとして利用 – phpenvとphp-buildで作るモダンなPHP開発環境 | Creator Life
add rbenv-install for working as plugin to CHH’s phpenv by hnw · Pull Request #69 · CHH/php-build · GitHub
のあたりを参考に。
1 2 3 4 5 6 7 |
# mkdir /usr/local/phpenv/plugins # cd /usr/local/phpenv/plugins # git clone https://github.com/CHH/php-build.git php-build # curl https://raw.github.com/hnw/php-build/plugin-to-chh-phpenv/bin/rbenv-install > /usr/local/phpenv/plugins/php-build/bin/rbenv-install # chmod 755 /usr/local/phpenv/plugins/php-build/bin/rbenv-install |
グループとアクセス権の設定。
1 2 3 4 |
# chgrp -R rbenv php-build # chmod -R g+rwxs php-build |
php-build を入れると phpenv install コマンドが使えるようになります。
phpenv install コマンドが使えるか確認。
1 2 3 4 5 6 7 8 9 10 11 12 |
# phpenv install usage: phpenv install VERSION Available versions: 5.2.17 5.3.10 5.3.11 5.3.11RC1 5.3.11RC2 ... |
phpenv intall でインストールできるPHPのバージョンがずらーっと出てきます。たくさんありますね。
PHP のインストール
では、いよいよ PHP のインストールまでたどり着きましたが、前もって PHP のインストールに必要な依存パッケージを先にいれておきます。
1 2 3 4 |
# yum -y --enablerepo=epel install re2c libmcrypt libmcrypt-devel # yum -y install libxml2-devel bison bison-devel openssl-devel curl-devel libjpeg-devel libpng-devel libmcrypt-devel readline-devel libtidy-devel libxslt-devel httpd-devel enchant-devel libXpm libXpm-devel freetype-devel t1lib t1lib-devel gmp-devel libc-client-devel libicu-devel oniguruma-devel net-snmp net-snmp-devel bzip2-devel |
インストール実行前にconfigureオプションの設定を、 /usr/local/phpenv/plugins/php-build/share/php-build/definitions 以下のバージョンのファイルに設定します。5.4.9, 5.3.3, 5.2.17 を入れてみようと思うので、それぞれのファイルに以下の configure_option を書いておく。
1 2 3 4 5 6 7 |
# vi /usr/local/phpenv/plugins/php-build/share/php-build/definitions/5.4.9 configure_option "--disable-dba --enable-fpm --enable-bcmath --enable-calendar --enable-cgi --enable-ctype --enable-dom --enable-exif --enable-fileinfo --enable-ftp --enable-gd-native-ttf --enable-hash --enable-intl --enable-json --enable-magic-quotes --enable-mbregex --enable-mbstring --enable-pcntl --enable-phar --enable-shmop --enable-simplexml --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-tokenizer --enable-ucd-snmp-hack --enable-wddx --enable-zip --with-apxs2=/usr/sbin/apxs --with-bz2 --with-curl --with-enchant --with-freetype-dir --with-gd --with-gettext --with-gmp --with-iconv --with-imagick --with-imap-ssl --with-imap --with-jpeg-dir --with-kerberos --with-layout=GNU --with-libxml-dir --with-mcrypt --with-mhash=yes --with-mysql --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-onig --with-openssl --with-pcre-regex --with-pdo-mysql=mysqlnd --with-pear --with-pic --with-png-dir --with-snmp --with-t1lib --with-xmlrpc --with-xpm-dir --with-zlib --with-zlib-dir --without-mm" install_package "http://downloads.php.net/stas/php-5.4.9.tar.bz2" install_pyrus install_xdebug "2.2.1" |
さて、いよいよPHPのインストール。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# phpenv install 5.4.9 [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.4.9 into /usr/local/phpenv/versions/5.4.9 [Downloading]: http://downloads.php.net/stas/php-5.4.9.tar.bz2 [Preparing]: /tmp/php-build/source/5.4.9 [Compiling]: /tmp/php-build/source/5.4.9 [Pyrus]: Downloading from http://pear2.php.net/pyrus.phar [Pyrus]: Installing executable in /usr/local/phpenv/versions/5.4.9/bin/pyrus [XDebug]: Downloading http://xdebug.org/files/xdebug-2.2.1.tgz [XDebug]: Compiling in /tmp/php-build/source/xdebug-2.2.1 [XDebug]: Installing XDebug configuration in /usr/local/phpenv/versions/5.4.9/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 log in /tmp/php-build.5.4.9.20130403163527.log [Success]: Built 5.4.9 successfully. |
結構時間がかかりましたが成功しました。続いて、インストールした PHP にパスを通す rehash。PHP インストール時に httpd 用モジュールである liphp5.so が作成されますが、他のバージョンの PHP をインストールした際に、liphp5.so が上書きれるのを避けるために退避させます。
1 2 3 4 |
# phpenv rehash # mv /etc/httpd/modules/libphp5.so /usr/local/phpenv/versions/5.4.9/ |
複数の PHP を入れる時は、configure_option の -enable-fpm を –disable-fpm に変更
次は、5.3.3 を入れます。
1 2 3 4 5 6 |
# vi /usr/local/phpenv/plugins/php-build/share/php-build/definitions/5.3.3 # phpenv install 5.3.3 BUILD ERROR You've configured multiple SAPIs to be build. You can build only one SAPI module and CLI binary at the same time. |
と出てしまった。よく分かんないけど、http://qiita.com/items/7d031440bb174a55a6a1 を参考に、configure_option の -enable-fpm を –disable-fpm に変更する。
1 2 3 4 5 6 7 8 |
# vi /usr/local/phpenv/plugins/php-build/share/php-build/definitions/5.3.3 configure_option "--disable-dba --disable-fpm --enable-bcmath --enable-calendar --enable-cgi --enable-ctype --enable-dom --enable-exif --enable-fileinfo --enable-ftp --enable-gd-native-ttf --enable-hash --enable-intl --enable-json --enable-magic-quotes --enable-mbregex --enable-mbstring --enable-pcntl --enable-phar --enable-shmop --enable-simplexml --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-tokenizer --enable-ucd-snmp-hack --enable-wddx --enable-zip --with-apxs2=/usr/sbin/apxs --with-bz2 --with-curl --with-enchant --with-freetype-dir --with-gd --with-gettext --with-gmp --with-iconv --with-imagick --with-imap-ssl --with-imap --with-jpeg-dir --with-kerberos --with-layout=GNU --with-libxml-dir --with-mcrypt --with-mhash=yes --with-mysql --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-onig --with-openssl --with-pcre-regex --with-pdo-mysql=mysqlnd --with-pear --with-pic --with-png-dir --with-snmp --with-t1lib --with-xmlrpc --with-xpm-dir --with-zlib --with-zlib-dir --without-mm" install_package "http://museum.php.net/php5/php-5.3.3.tar.bz2" install_pyrus install_xdebug "2.2.0" |
やり直したらまたエラー。
1 2 3 4 5 |
/usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status make: *** [libphp5.la] エラー 1 |
lltdl がないとのことなので入れる。必要なパッケージがなくてエラーの場合は、その都度ぐぐって入れるの繰り返し。
1 2 3 |
# yum -y install libtool-ltdl-devel |
再度トライ。
1 2 3 4 5 |
# phpenv install 5.3.3 # phpenv rehash # mv /etc/httpd/modules/libphp5.so /usr/local/phpenv/versions/5.3.3/ |
無事にインストールできました。PHPのconfigure_optionわけわからんですね。
続いて、5.2.17 をインストール。
1 2 3 4 5 6 |
# vi /usr/local/phpenv/plugins/php-build/share/php-build/definitions/5.2.17 # phpenv install 5.2.17 # phpenv rehash # mv /etc/httpd/modules/libphp5.so /usr/local/phpenv/versions/5.2.17/ |
なお、PHP5.2.17を入れる際に以下のエラーが出た。
1 2 3 4 |
configure: warning: flex versions supported for regeneration of the Zend/PHP parsers: 2.5.4 (found: 2.5.35) configure: error: Please reinstall libmhash - I cannot find mhash.h |
ですので、以下のパッケージを入れてやり直したらいけました。
1 2 3 4 |
# yum -y --enablerepo=epel install mhash # yum -y --enablerepo=epel install mhash-devel |
インストールを繰り返す時は、rehash と libphp5.so の退避を忘れないようにする。
1 2 3 4 5 6 7 8 9 10 11 |
# phpenv install 5.4.9 # phpenv rehash # mv /etc/httpd/modules/libphp5.so /usr/local/phpenv/versions/5.4.9/ # phpenv install 5.3.3 # phpenv rehash # mv /etc/httpd/modules/libphp5.so /usr/local/phpenv/versions/5.3.3/ # phpenv install 5.2.17 # phpenv rehash # mv /etc/httpd/modules/libphp5.so /usr/local/phpenv/versions/5.2.17/ |
phpenv のコマンドを確認
その他コマンドの確認など。インストール済みのPHPパッケージを確認
1 2 3 |
# phpenv versions |
PHPのバージョンを切り替え
1 2 3 |
# phpenv global 5.4.9 |
現在有効なPHPのバージョン確認
1 2 3 4 |
# php -v # phpenv version |
PHPをアンインストール
1 2 3 4 |
# rm -rf /usr/local/phpenv/versions/5.4.9 # phpenv rehash |
PHP を Apache モジュールとして動かすための設定
続いて、php を Apacheモジュールとして動かすための設定。php.conf を作成する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# vi /etc/httpd/conf.d/php.conf # phpenv で管理しているためphpのバージョンにより切り替える #LoadModule php5_module /usr/local/phpenv/versions/5.2.17/libphp5.so #LoadModule php5_module /usr/local/phpenv/versions/5.3.3/libphp5.so LoadModule php5_module /usr/local/phpenv/versions/5.4.9/libphp5.so # php5_module <IfModule php5_module> AddType application/x-httpd-php .php .php5 .phtml AddType application/x-httpd-php-source .phps <IfModule dir_module> DirectoryIndex index.html index.php </IfModule> </IfModule> |
続いて、メインのhttpd.confのphpモジュール読み込みをコメントアウト。
1 2 3 4 |
# vi /etc/httpd/conf/httpd.conf #LoadModule php5_module /usr/lib/httpd/modules/libphp5.so |
Apache 再起動。
1 2 3 4 5 |
# httpd -t Syntax OK # service httpd restart |
これで、PHPがApacheのモジュールとして動作します。phpinfo のページを作って動作確認。DocumentRoot に info.php を作ります。
1 2 3 4 |
# vi /var/www/html/phpinfo.php <?php phpinfo(); ?> |
ブラウザから、”サーバー名(あるいはサーバーIPアドレス)/phpinfo.php” にアクセスして phpinfo が表示されればOK。
- – 参考リンク –
- CHH/phpenv · GitHub
- CHH/php-build · GitHub
- モダンなPHP開発環境を構築する – phpenv + php-build で 複数のPHPバージョンを管理する | Creator Life
- php-buildをphpenvのプラグインとして利用 – phpenvとphp-buildで作るモダンなPHP開発環境 | Creator Life
- virtualbox(centos)でphpenv+php-buildインストールメモ(5.3,5.4変更確認まで) – Qiita [キータ]
- Linux – virtualbox(centos)でnodebrewインストールメモ – Qiita [キータ]
- phpenv+php-build+pyrusでの複数バージョンPHP管理など – cap’n webb
- CentOS & Linux の関連記事
- Job for nginx.service failedのNginxエラー
- upstream sent too big header while reading response header from upstream(Nginx/Rails)
- Can’t get information about user clamav(clamdエラー)
- STDERR: Exception in thread “main” java.lang.InternalErrorエラー
- Linuxサーバー容量を確認するコマンドdf,duをマスターする!
- rmでファイル削除後にdf -hで容量が減らない時の対処(Linux)
- Apacheをローカルネットワークのみに公開にする
- logwatchからのメールが来ないと思ったら…
- Linuxサーバの負荷や使用率を調査するコマンドと手順
- Bashの脆弱性もう一件CVE-2014-7169に対するパッチ適用
Leave Your Message!