先日はDBバージョン変更に伴う質問でお世話になりました。その節はありがとうございました。
お陰様でxoopsサイト全て順調に稼働していたのですが、標記の問題が発生しました。またお力をお貸しいただければと思います。
新規にインストール、または既にインストールされているモジュールのアクセス権限を変更しようとすると500エラーが発生します。
phpデバグにて取得したエラーログは以下の通りでした。
Fatal [PHP]: Uncaught Error: [] operator not supported for strings in /home/(xoops trust pathへのアドレス)/libs/altsys/include/mygroupperm.php:91 Stack trace: #0 /home/(xoops trust pathへのアドレス)/libs/altsys/class/MyBlocksAdmin.class.php(1041): include() #1 /home/(xoops trust pathへのアドレス)/libs/altsys/myblocksadmin.php(57): MyBlocksAdmin->processPost() #2 /home(xoops trust pathへのアドレス)/modules/gnavi/admin.php(40): include('/home/(xoops trust pathへのアドレス)/...') #3 /home/ユーザー名/www/公開側ルートディレクトリ/modules/products/admin/index.php(10): require('/home/(xoops trust pathへのアドレス)/...') #4 {main} thrown in file (trust)/libs/altsys/include/mygroupperm.php line 91 (1)
サーバー情報など
Distribution : XOOPS X(ten) 20180208
XC Legacyバージョン : XOOPS Cube Legacy 2.2.3 Beta 1
使用言語 : ja_utf8
オペレーティングシステム : FreeBSD
サーバー : Apache
PHPバージョン : 7.2.7
MySQLのバージョン : 5.5.59-log
※mysqlが5.7.21 の環境でも問題が再現します。
※php7.19でも問題が再現します
※xoopsはホダ塾ディストリビューションからアップグレードしたもの、2018年2月に新規インストールしたもの、全てにおいて問題が発生します。(全てxoops x です)
試しにサーバーのphpバージョンを一時的に5.6に戻したところ
正常に権限変更が出来ました。
できればphp7のままですべてのサイトを運用したいのですが、うまく修復できる方法やアドバイスを頂ければと思います。
どうかよろしくお願いいたします。
コメント(4)

yoshi34さん、こん**はpcboyです。
最新のXOOPS X 自体はPHP7に対応しているので、
エラーログから以下の二つのモジュールのPHP7対応に問題があるのではないかと推測されます。
modules/gnavi
modules/products
ただし、gnaviモジュールはX-Updateモジュールから最新版に更新できますし、たぶん、PHP7に対応済だと思います。
productsモジュールのPHP7対応を確認されると良いと思います。
以上。
#少しでも、お役に立てば幸いです。
#では、また。
pcboyさん返信ありがとうございます。
エラーログはほんの一例で、最初の記事冒頭に書いた通り
「新規にインストール、または既にインストールされているモジュールのアクセス権限を変更しようとすると500エラーが発生します。」
今のところ、全てのモジュールに関して権限変更時に500エラーが発生している状態です。
一部のサイトで(複数サイトを運営中)古いモジュールの削除などメンテナンスもしたのですが症状変わりません。
ちなみに「product」というモジュールはGNAVIの名称変更したもののことです。
もちろん、x-updateですべて最新版に更新済みです。
引き続き、何か情報ございましたら是非ご教授下さい。
nao-ponさん、いつもありがとうございます。
記事の確認を怠っておりまして返事が遅くなり申し訳ありません。
只今、テストサイトにて、教えて頂いた処理を施したところ正常動作するようになりました!問題なくモジュールのアクセス権限を変更できるようになりました。
本当にありがとうございました。
これから、管理しているサイト全てに処理を施します。
また何かあればこちらのスレッドにご報告いたします。
取り急ぎお礼とご報告でした。
yoshi34 さん、こんにちは。$msg が定義されていない場合のエラーですね。
取り急ぎ、/libs/altsys/include/mygroupperm.php 57行目の "$gperm_handler = xoops_gethandler('groupperm');" の前に次のコードを挿入してみてください。
1 2 3if (!isset($msg) || !is_array($msg)) { $msg = array(); }