エックスサーバーでの ionCube Loader の設定について調べてみた
エックスサーバーでの ionCube Loader の設定について調べてみた事をまとめておきます。現在は、PHP のバージョンとしては、7.0.7 / 5.6.22 / 5.5.30 / 5.4.45 / 5.3.3 / 5.2.17 / 5.1.6 / 4.3.9 の 8つのバージョンが用意されている。推奨 5.6.22 で、5.5.30 が無印、それ以下は非推奨というラベルがついている。
PHP 5.6.22 の場合
- 現在公式にサポートされているバージョンで、このバージョンの利用が推奨されている。 *「PHP高速化設定(FastCGI)」と「CPU負荷を軽減するための拡張モジュール(OPcache)」が標準で有効となっており、無効にすることはできない。
- php.ini の設定は、コントロールパネルで設定できるように準備されており、ホームディレクトリなどにお客様側で個別に設定されたphp.iniは全て無効になっている。
- public_html と同じ階層にある xserver_php の中にある php.ini を修正することで、ioncube loader の利用が可能なことを確認できた。 その際に「zend_extension = opcache.so 」の前に記述する必要がある。コントロールパネルからでなく、追加しても同様に動作することも確認できた。 *.htaccess は初期状態で以下の4行が書かれている。これは消してはいけない。
suPHP_ConfigPath /home/ablogcms/ablogcms.xsrv.jp/xserver_php/ AddHandler fcgid-script .php .phps FCGIWrapper "/home/hobbyspot/hobbyspot.xsrv.jp/xserver_php/php-cgi" .php FCGIWrapper "/home/hobbyspot/hobbyspot.xsrv.jp/xserver_php/php-cgi" .phps
PHP5.5.30 の場合
- 現在公式にサポートされているバージョンですが、PHP 5.6 の利用を推奨している。
- public_html と同じ階層にある xserver_php の中にある php.ini を修正することで、ioncube loader の利用が可能なことを確認できた。 その際に「zend_extension = opcache.so 」の前に記述する必要がある。コントロールパネルからでなく、追加しても同様に動作することも確認できた。
- .htaccess は初期状態で以下の2行が書かれている。これは消してはいけない。
- 「PHP高速化設定(FastCGI)」と「CPU負荷を軽減するための拡張モジュール(OPcache)」がコントロールパネルから ON/OFF が可能になっている。
- FastCGI が OFF の時にコントロールパネルから、php.ini の設定を OFF にすると、ドキュメントルートに設置した php.ini が有効になるようです。
コントロールパネルからの php.ini の設定
一般的にはコントロールパネルから php.ini を設定する際には、保存時に設定が有効になるようになっているが、xserver_php/php.ini を直接 FTP 等を利用して修正すると即時反映されない。 この点が、なかなか理解できず正しい設定を追加しているのに動かないという状況になっている事がわかりました。
コントロールパネルからの php.ini の設定を OFF にする事で、public_html の php.ini が有効になります。この場合には、修正したものが即時反映されます。
FastCGI & OPcache OFF の場合の .htaccess
suPHP_ConfigPath /home/ablogcms/ablogcms.xsrv.jp/xserver_php/ AddHandler x-httpd-php5.3 .php .phps
FastCGI & OPcache ON の場合の .htaccess
suPHP_ConfigPath /home/ablogcms/ablogcms.xsrv.jp/xserver_php/ AddHandler x-httpd-php5.5 .php .phps AddHandler fcgid-script .php .phps FCGIWrapper "/home/hobbyspot/hobbyspot.xsrv.jp/xserver_php/php-cgi" .php FCGIWrapper "/home/hobbyspot/hobbyspot.xsrv.jp/xserver_php/php-cgi" .phps
OPcache が有効な場合の ionCube Loader の対応
上の調査のところにも書いてあるが、zend_extension = opcache.so の前に、ionCube Loader の記述を追加する必要がある。なので、プログラムから ionCube Loader の設定をする場合、OPcache 設定の有無をチェックして設定するか、[Zend Optimizer] の記述の下に追加するようにするのがいいかと思う。
問題は、PHP のプログラム側から php設定 の ON/OFF の区別をつける方法がわからない。 php_ini_loaded_file という関数で、現在利用している php.ini が認識できたので、そこに ioncube Loader の記述ができそうです。 /home から始まってるパスでない場合には、php.ini ファイルを作る事で利用できるようになる事も確認できました。
今回検証した環境
非推奨 の 5.4 以下の PHP と 7.0.x 以上では「簡単セットアップ」を動かないようにしたので、検証した環境は以下の5つになりました。
- PHP 5.6.22 / コンパネ php.ini 設定 : ON , FastCGI : ON , OPcache : ON
- PHP5.5.30 / コンパネ php.ini 設定 : ON , FastCGI : ON , OPcache : ON
- PHP5.5.30 / コンパネ php.ini 設定 : ON , FastCGI : ON , OPcache : OFF
- PHP5.5.30 / コンパネ php.ini 設定 : ON , FastCGI : OFF , OPcache : OFF
- PHP5.5.30 / コンパネ php.ini 設定 : OFF
一番、楽なのは 5.5.30 コンパネ php.ini 設定 が OFF の環境が public_html で自分で php.ini を設定するので分りやすいですね。