😀

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

2022/11/28に公開

以前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
以上。

Discussion