エックスサーバーでの 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 を設定するので分りやすいですね。


コメント

山本一道

山本 一道

有限会社アップルップル

名古屋のホームページ制作会社「有限会社アップルップル」の代表をしています。弊社で開発しているCMS「a-blog cms」や、名古屋の「WCAN」という名古屋のWeb制作者のためのセミナーの主催や、コワーキングスペース「ベースキャンプ名古屋」も始めました。

エントリーリスト

カテゴリーリスト

タグクラウド

実践! コンテンツファーストのWebサイト運用  a-blog cmsではじめるCMSプロトタイピング

2016年6月30日に株式会社ボーンデジタル様より「実践! コンテンツファーストのWebサイト運用 a-blog cmsではじめるCMSプロトタイピング」が発売されました。