LimeSurveyというアンケートツールがあるのですが、これを日本語化している素晴らしい会社さんがあります。ホント大感謝です。
さて、 https://www.d-ip.jp/limesurvey/download-ls/download1/ で公開されている「LimeSurvey2.64plus日本語対応版」(limesurvey2.64.6+170332_ja_dip.tar.gz)なのですが、PHP7.1.5+opcache環境では管理機能の「プラグインマネージャ」をクリックした瞬間にCPUが100%に張り付いてタイムアウトしてしまいます。これは本アプリケーションで使用されているHTMLPurifierというライブラリがopcacheのバグを踏んでしまっているようです。
そのままの状態ではopcache自体を無効にするか、
(limesurvey-install-dir)/framework/vendors/htmlpurifier/HTMLPurifier.standalone.php
をopcacheのblacklistに追加すると動作するのですが折角ですからソースを修正して対応しておきたいものです。
https://github.com/ezyang/htmlpurifier/issues/134
によると
https://github.com/Xiphin/htmlpurifier/commit/cb4871f4464659918e0c59b914d359a8874ea62a
https://github.com/Xiphin/htmlpurifier/commit/b9bc1039da7b5f49336580bf6d08499199b7309f
でパッチが提示されていますので、これを参考に修正してみます。Good job, Xiphin!
$ diff HTMLPurifier.standalone.php.20170608 HTMLPurifier.standalone.php 14332c14332,14334 < $current_li = false; --- > // 20170608 to workaround PHP7 bug > // $current_li = false; > $current_li = new stdClass(); 14353c14355,14358 < if ($current_li === false) { --- > > // 20170608 to workaround PHP7 bug > // if ($current_li === false) { > if (get_class($current_li) === "stdClass") { 修正済みファイルはここからどうぞ
ちなみにここで配布されているプラグインのうち、「お知らせ表示プラグインパッケージ」(Infomation_plugin_dip_20160714.tar.gz)についてはインストールするとcliで起動したときにFATAL Errorとなってしまいますので当方の環境では外しています。
念の為:今回の環境はAmazon Linux(4.9.27-14.31.amzn1.x86_64)上で、
php71-1.0-1.el6.remi.x86_64
php71-php-fpm-7.1.5-1.el6.remi.x86_64
php71-php-opcache-7.1.5-1.el6.remi.x86_64
httpd24-2.4.25-1.68.amzn1.x86_64
という感じです。