Mac OS X 10.11以降でのTransactd PHPクライアントのインストール

Mac OS X 10.11以降では、SIPの制限により、クライアント共有モジュールをデフォルトの /usr/libにインストールできません。

また、Transactd PHPクライアントのインストールには/usr/bin/php-configの返す情報が使われますが、Mac OS X 10.11以降ではそれが正しい情報を返しません。

事前に以下の準備をすることで、SIPを有効にしたままそれ以前のOS Xと同様にインストールできるようになります。

なお、以下の内容はOS X 10.12で確認しています。また、Transactdのソースコードバージョンは3.7.2以降が対象です。

ソースコードをマッピングする

Transactdのビルドではphp-configコマンドを使用してPHPの情報を取得します。 /usr/binにはphp-configコマンドがありますが、php-config --include-dirの結果/usr/lnclude/php は正しいソースのパスではありません。

OS X 10.12のマシンで確認したところ、ソースは /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php にありました。そこで正しいパスにシンボリックリンクを張ります。

cd /usr
sudo mkdir include
cd include
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php php

PHPのincludeパスを作成する

TransactdのPHPクライアントは、extensionモジュールとtransactd.phpファイルによって構成されます。 transactd.phpはPHPのincludeパスに配置するのが便利です。

しかしOS XデフォルトのPHPはincludeパスがありません。そこでPHPのincludeパスを作成します。

cd /usr
sudo mkdir local
cd local
sudo mkdir php
cd php
sudo mkdir include

extension-dirを作成する

extension-dirのパスはデフォルトで/usr/lib配下にあるため、SIPの制限により、ビルドしたエクステンションをコピーすることができません。そこで別の場所にextension-dirを作成します。

cd /usr/local/php
sudo mkdir extensions

既存のextension-dirの内容をコピーします。コピー元のフォルダはphp-config --extension-dirコマンドを使って確認します。

php-config --extension-dir
=> /usr/lib/php/extensions/no-debug-non-zts-20131226

sudo cp /usr/lib/php/extensions/no-debug-non-zts-20131226/* /usr/local/php/extensions

php.iniを編集する

viエディタを起動します。

sudo vi /etc/php.ini

以下の行を置換または追加します。

include_path=.:/usr/local/php/include
extension-dir=/usr/local/php/extensions

CMakeの実行

ここから先は以前のOS XやLinuxと同様ですが、cmakeの実行時に上記で作成したフォルダなどを指定します。

cmake .. -DTRANSACTD_PHP=ON -DBOOST_ROOT=~/boost_1_59_0 \
  -DTRANSACTD_CLIENTS_PREFIX=/usr/local/lib \
  -DPHP_EXTENSION_DIR=/usr/local/php/extension