PHP

.phpenvで入れた場合のpeclモジュールの追加方法

More than 5 years have passed since last update.

以前virtualbox(centos)でphpenv+php-buildインストールメモ(5.3,5.4変更確認まで)でphpenvを入れたのだが、peclのコマンドがなかった。

はてそこら辺ってどうやるんだろう??ということでpeclモジュールのmongoを入れた時のメモ


参考にしたサイト

※以降は全てroot権限で実行しています


peclコマンドがない

peclモジュールを入れるときに便利なpeclコマンドがなかった

which pecl

なかったのでphpizeで入れることにした

which phpize

/root/.phpenv/shims/phpize


pecl/mongoの取得

peclのサイトで欲しいextensionのダウンロードURLを取得する


/tmp

cd /tmp

wget http://pecl.php.net/get/mongo-1.3.4.tgz

--2013-02-26 19:44:13-- http://pecl.php.net/get/mongo-1.3.4.tgz
pecl.php.net をDNSに問いあわせています... 76.75.200.106
pecl.php.net|76.75.200.106|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 124844 (122K) [application/octet-stream]
`mongo-1.3.4.tgz' に保存中

100%[===========================================================>] 124,844 102K/s 時間 1.2s

2013-02-26 19:44:15 (102 KB/s) - `mongo-1.3.4.tgz' へ保存完了 [124844/124844]

#tgzを解凍する
tar zxvf mongo-1.3.4.tgz



phpizeを使ってコンパイルする


configureファイルを作成する


/tmp/mongo-1.3.4

cd /tmp/mongo-1.3.4

phpize

Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525



configure


/tmp/mongo-1.3.4

./configure

make
#インストールする内容を確認
make test

Build complete.
Don't forget to run 'make test'.

=====================================================================
PHP : /root/.phpenv/versions/5.4.11/bin/php
PHP_SAPI : cli
PHP_VERSION : 5.4.11
ZEND_VERSION: 2.4.0
PHP_OS : Linux - Linux localhost.localdomain 2.6.32-279.19.1.el6.x86_64 #1 SMP Wed Dec 19 07:05:20 UTC 2012 x86_64
INI actual : /tmp/mongo-1.3.4/tmp-php.ini
More .INIs :
CWD : /tmp/mongo-1.3.4
Extra dirs :
VALGRIND : Not used
=====================================================================
TIME START 2013-02-26 10:48:37
=====================================================================
No tests were run.

#インストール
make install

Installing shared extensions: /root/.phpenv/versions/5.4.11/lib/php/extensions/no-debug-non-zts-20100525/
#入った



mongo.iniの追加

上記のコンパイルでextensionが/root/.phpenv/versions/5.4.11/lib/php/extensions/no-debug-non-zts-20100525/に入ってうのがわかったのでiniファイルを追加する


/root/.phpenv/versions/5.4.11/etc/conf.d/mongo.ini

#新規で作成

vim /root/.phpenv/versions/5.4.11/etc/conf.d/mongo.ini

extension=/root/.phpenv/versions/5.4.11/lib/php/extensions/no-debug-non-zts-20100525/mongo.so



apacheの場合は再起動

いつもどおりで

/etc/init.d/httpd restart


nginxの場合はphp-fpmをkillしてnginxの再起動


php-fpmのプロセスを殺す

ps aux | grep php

root 2331 0.0 0.6 291632 6580 ? Ss 19:17 0:00 php-fpm: master process (/root/.phpenv/versions/5.4.11/etc/php-fpm.conf)
nobody 2332 0.0 0.9 291788 9308 ? S 19:17 0:00 php-fpm: pool www
nobody 2333 0.0 0.9 291788 9308 ? S 19:17 0:00 php-fpm: pool www
root 7932 0.0 0.0 107460 916 pts/0 S+ 20:06 0:00 grep php

#プロセスを殺す
kill 2331


nginxの再起動

/etc/init.d/nginx restart

nginx を停止中: [ OK ]
nginx を起動中: [ OK ]

後はphpinfo()とかでmongoのモジュールが入っていればOK

以上。