Install Transactd PHP client on Mac OS X 10.11 or later
On Mac OS X 10.11 and later, due to limitations of SIP, you can not install the client shared modules in the default directory /usr/lib
.
/usr/bin/php-config
is used in installing Transactd PHP client. But it does not return correct infomation on Mac OS X 10.11 or later.
By preparing the following, it becomes possible to build and install clients like previous versions of OS X, without disabling SIP.
The following contents are confirmed with OS X 10.12 and Transactd 3.7.2 or later.
Mapping source code
php-config
command is used by the building process of Transactd PHP client. There is php-config
in /usr/bin
. But the result of php-config --include-dir
is /usr/lnclude/php
, which is not the correct source path.
We found it on the OS X 10.12 machine, in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php
. So make the symbolic link to the path.
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
Make PHP include directory
Transactd PHP client consists of extension module and transactd.php
. It is convenient to place transactd.php
in PHP's include path.
But there is no include path of PHP installed in OS X by the default. So we make it.
cd /usr
sudo mkdir local
cd local
sudo mkdir php
cd php
sudo mkdir include
Make PHP extension-dir
Since extension-dir
is under /usr/lib
by default, it is impossible to copy the extension that you built to there, because of limitations of SIP. So we create extension-dir
in another location.
cd /usr/local/php
sudo mkdir extensions
Copy the contents of the existing extension-dir
. Check the copy source directory with 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
Edit php.ini
Open /etc/php.ini
with vi editor:
sudo vi /etc/php.ini
Replace or add the following lines:
include_path=.:/usr/local/php/include
extension-dir=/usr/local/php/extensions
Run CMake
From here, it is the same as the previous versions of OS X or Linux. Specify the directories created above when executing cmake.
cmake .. -DTRANSACTD_PHP=ON -DBOOST_ROOT=~/boost_1_59_0 \
-DTRANSACTD_CLIENTS_PREFIX=/usr/local/lib
-DPHP_EXTENSION_DIR=/usr/local/php/extension