2011/11/30

[PHP]php-mcryptがyumでインストールできないときに幸せになる方法

RedHat系のLinuxディストリビューションを利用している方はyumのお世話になることも多いかと思います。私が使っているCentOSもそんなRedHat系のディストリビューションですし、yumには足向けて寝られないくらいお世話になっております。

今日はphp53をyumを使って勇み足でインストールしてしまったおちゃめさんに朗報です。

php53-mcryptというパッケージは存在しません!

なので、PHPでcrypt系の関数を使うための選択肢としては
  1. php53を捨てる(漢らしい!)
  2. phpを自らコンパイルしなおす(これを選ぶ人はそもそもyumをry)
  3. php-mcryptパッケージに相当する部分だけ自分で作ってみる(適度な仕事した感が得られます)
ということで、どれを選びますか、奥さん。

今日は3の自分で作る方法を利用して、本番環境でphp53パッケージを使ってしまったものの、mcryptが導入できないことを知って前門の虎、後門の狼みたいな感じになっちゃった、粗忽ものを救う、そんな企画です。




自分でmcryptパッケージを作成する場合に必要なものは以下のとおりです。
  • PHPのバイナリファイル
  • php-develパッケージ
残念なことに、PHPのバイナリファイルは必要です。
wget http://museum.php.net/php5/php-5.3.3.tar.gz

もしくは
curl http://museum.php.net/php5/php-5.3.3.tar.gz
# 他のバージョンが欲しい場合は http://www.php.net/releases/ から選ぶ

ダウンロードが完了したら、tarballを展開します。
tar zxf php-5.3.3.tar.gz

準備は完了です。では目的のmcryptをコンパイルします。ここからの作業はsudo、もしくはrootユーザーで実行してください。
cd php-5.3.3/ext/mcrypt
phpize
aclocal
./configure
make
make test
make install

インストール完了です。次はmcryptのモジュールを読み込むようにphp.iniを修正したいと思いますが、php.iniもhttpd.confと同じように、php.dディレクトリ以下の設定ファイルを自動で読み込むようになっているので、php.iniには追記せずに新たに設定ファイルを書くことにしましょう。
vi /etc/php.d/mcrypt.ini

# 以下の一行だけ書きこむ
extension=mcrypt.so

httpdリスタートすれば完了です。首の皮一枚つながった感じでしょうか?

本番でこういうのをやるのはホントにダメ!絶対!


see also:
そろそろ真面目に自動テストしよう
PHPerが一瞬でC言語をマスターする方法
PHPのmysql系関数のまとめ
さくらインターネットの .mailfilter にハマる


0 件のコメント:

コメントを投稿