PHPをソースからインストールするときにopcacheを有効にできない | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

PHPのコードキャッシュとしてOPcacheがPHP5.5以降バンドルされているのですが、CentOS6系のサーバー上でPHPをソースからインストールする際に、--enable-opcacheオプションをつけてコンパイルすると下記のエラーが出てうまくインストールできずにはまりました。


$ ./configure --enable-opcache
- snip -
checking "whether flock struct is linux ordered"... "no"
checking "whether flock struct is BSD ordered"... "no"
configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no

まぁ、メッセージのとおり--enable-opcache=noオプションをつければコンパイルは通るわけですけど、コードキャッシュ使ったほうがパフォーマンスも良くなりますし、APCとかコードキャッシュしてくれなくなったりしてますんでOPcacheを使いたいわけですよ。

で、解決方法は共有ライブラリのパスを定義している/etc/ld.so.confに/usr以下のライブラリのディレクトリを追加したら解決しました。


include ld.so.conf.d/*.conf
/usr/local/lib
/usr/lib64

追加した後は、ldconfigで設定を反映します。


# ldconfig

その後、もう一度PHPのconfigureをしたら通ったので、そのままmake、make installします。

インストール完了後は、OPcacheを有効にするためにphp.iniを編集。


[opcache]
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=30
opcache.fast_shutdown=1
opcache.enable_cli=1

余談ですけど、Xdebugと一緒に使う場合はXdebugの設定より前に上記を書いておかないといけないらしいです(詳細はマニュアル 参照)。

最後に、Apacheを再起動してOPcacheが使えているかを確認。


# php -v
PHP 5.6.13 (cli) (built: Sep 28 2015 11:18:05) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

OPcacheの詳しい使い方は以前に書いた、「PHPコードキャッシュにOPcacheを使ってみる 」も参考にしてみてください。