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