凡人エンジニアの前向きスローライフ

南国ビーチでビールを飲みながらゆっくり過ごしたい凡人エンジニアが、気ままに書いているブログです

memcachedをインストールしてPHP7から使用するまでの手順(mac編)

memcachedを導入からPHP7を使用した簡易的な動作確認までの手順のメモ。

今回の対象はmemcache ではなくmemcached ですのでご注意ください。

前提環境

OS : Mac OS High Sierra (10.13.1)

PHP : 7.1.13

導入手順

memcachedインストール。

$ brew install memcached
$ brew install libmemcached 

memcachedのサービス登録

 サービス登録用のファイルの作成

$ vi /Library/LaunchDaemons/homebrew.memcached.plist

下記をコピペしてファイルを保存 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>memcached</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/memcached</string>
<string>-u</string>
<string>devy</string>
<string>-m</string>
<string>32</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

サービスに登録、起動

$ launchctl load /Library/LaunchDaemons/homebrew.memcached.plist
$ launchctl start memcached

PHP拡張モジュールの導入

下記URLからPHP7.0.8のmemcached.soをダウンロード

https://github.com/majksner/php-memcached-mamp

 

拡張モジュール配置ディレクトリへ memcached.soをコピーする。

※拡張モジュール配置ディレクトリの位置はphpinfo()のextension_dirの値で確認できる。

 

php.iniファイルに下記の記述を追加

extension = memcached.so

※php.iniファイルの場所はphpinfo()のLoaded Configuration Fileの値で確認できる。

 

httpサーバ再起動(apache, ngnx等) 

!!!!

webアクセスできなくなった!!(502 Bad Gateway)。

 

phpのエラーログ(php.error.log)を確認すると、以下のエラーが出力されていた。

PHP Warning: Cannot load module 'memcached' because required module 'igbinary' is not loaded in Unknown on line 0

 どうやらmemchachedを使用するたmには、前提としてigbinaryなるものが必要な模様。

 

igbinaryの導入

git clone git://github.com/igbinary/igbinary.git
cd igbinary/
phpize
./configure CFLAGS="-O2 -g" --enable-igbinary
make;make install

 作成された'igbinary.so'をmemcached.soと同じ手順で、ディレクトリ配置、php.iniに設定追加する。

httpサーバ再起動

→phpinfo()を見るとmemcachedの値が表示されていることを確認→導入完了。