PHPのLDAPモジュールをさくらのレンタルサーバで使う方法

2013年11月30日プレイヤーの日々 by: 永瀬 泰一郎

永瀬ですどうもどうも。本職はエンジニアですよー、ということでCAで使っている様々なシステムの開発や運用を行っています。

メンバー情報の管理や、稽古への出欠登録などはかれこれ5年前に作ったシステムを使っています。このシステムに登録されているメンバー情報をOpenLDAPのバックエンドとしてインテグレーションすることで、運営部の課題管理に使うRedmineやこのWordPressの認証に使っています。結構先進的でしょ?

さて、このブログやCAのオフィシャルサイトはさくらインターネットのレンタルサーバを使っているのですが、PHPのLDAPモジュールは含まれておりません。なので、独自にビルドして動かしていました。

さくらインターネットのレンタルサーバは最近OSの更新をおこなった関係でアーキテクチャが32bitから64bitになってしまったんですね。ビルドしたLDAPモジュールは32bitのものだったので当然のように動かなくなってしまいました。

で、もう一度ビルドした際の記録をここに残しておこうと思います。

OpenLDAPのビルド

まずOpenLDAPをビルドしてしまいましょう。

wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.31.tgz
tar zxfv openldap-2.4.31.tgz

で展開します。ホームディレクトリ内にインストールするため–prefixをつけてconfigureしてやります。slapdは使わないのでdisableにします。

./configure –prefix=$HOME/usr –enable-slapd=no
make
make install

PHPのビルド

今日時点で利用可能なPHPのバージョンは

  • 4.4.9
  • 5.2.17
  • 5.3.27
  • 5.4.22
  • 5.4.17

のようです。32bit時代に使ってたのが5.3系列だったのでそのまま使います。

wget http://jp1.php.net/get/php-5.3.27.tar.bz2/from/this/mirror
tar zxfv mirror

なんかファイル名がmirrorになってダウンロードされちゃいますけど。

さて、オフィシャルで用意されているPHPのビルドオプションをphpinfo()で見てみると、

‘./configure’ ‘–prefix=/usr/local/php/5.3.27’ ‘–with-openssl=/usr’ ‘–with-zlib=/usr’ ‘–with-curl’ ‘–enable-exif’ ‘–with-pcre-dir=/usr/local’ ‘–with-gd’ ‘–with-jpeg-dir=/usr/local’ ‘–with-png-dir=/usr/local’ ‘–enable-gd-native-ttf’ ‘–with-freetype-dir=/usr/local’ ‘–with-gettext=/usr/local’ ‘–with-gmp=/usr/local’ ‘–with-iconv-dir=/usr/local’ ‘–enable-mbstring’ ‘–with-mcrypt’ ‘–with-mysql=/usr/local/mysql/5.5’ ‘–with-mysqli=/usr/local/mysql/5.5/bin/mysql_config’ ‘–with-pdo-mysql=/usr/local/mysql/5.5’ ‘–enable-soap’ ‘–enable-sqlite-utf8’ ‘–with-xsl=/usr/local’ ‘–enable-zip’

となっているようです。これにldapをsharedで生成するオプションを付けてやりましょう。面倒なのでそのままベロっと。

./configure –prefix=/usr/local/php/5.3.27 –with-openssl=/usr –with-zlib=/usr –with-curl –enable-exif –with-pcre-dir=/usr/local –with-gd –with-jpeg-dir=/usr/local –with-png-dir=/usr/local –enable-gd-native-ttf –with-freetype-dir=/usr/local –with-gettext=/usr/local –with-gmp=/usr/local –with-iconv-dir=/usr/local –enable-mbstring –with-mcrypt –with-mysql=/usr/local/mysql/5.5 –with-mysqli=/usr/local/mysql/5.5/bin/mysql_config –with-pdo-mysql=/usr/local/mysql/5.5 –enable-soap –enable-sqlite-utf8 –with-xsl=/usr/local –enable-zip –with-ldap=shared,$HOME/usr
make

ちなみに–prefixにローカルディレクトリを指定してインストールしても正しく動きません。make installはできないので 該当モジュールを適当なパスにコピーします。

mkdir -p $HOME/usr/lib/php/extensions
cp modules/ldap.so $HOME/usr/lib/php/extensions

PHPの設定

最後にコントロールパネルからモジュールのパスをphp.iniで指定しましょう。

extension = [ホームディレクトリ]/usr/lib/php/extensions/ldap.so

phpinfo()でLDAPモジュールがロードを確認できます。

最後に

今回はLDAPのモジュールですが、上記のビルド方法を応用して標準で対応していうない様々なPHPモジュールを使うことができます。お試しください。

COMMENT & TRACKBACK

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このページの先頭へ