xoops_version.php にて、
$modversion['templates'][302]['file'] = '302.html';
$modversion['templates'][302]['description'] = '';
$modversion['templates'][303]['file'] = '303.html';
$modversion['templates'][303]['description'] = '';
というように書いているのですが、番号が302までなら問題ないのですが、
303があると、モジュールのアップデートが出来なくなります。
その際、画面が真っ白になって、
Warning [PHP]: touch(): Unable to create file /省略/www.coderesume.com/xoops_trust_path/uploads/xupdate/www.coderesume.com_cacheCheck.ini.php because Permission denied in file /省略/xoops_trust_path/modules/xupdate/class/handler/Store.class.php line 72
というWarningが出るのですが、このメッセージ自体は、アップデートが
うまくいっていた時でも管理画面の一番下に出ていたので、この件と関係
ないかもしれませんが、念のため、補足しておきます。
なお、サーバのHDDの空き容量は十分にあるのは確認してあります。
どなたか、アドバイスをお願いします。
コメント(6)

apache のエラーログを見ると、以下のようになっていました。
[Sat Feb 01 02:02:46 2014] [error] [client xxx.xxx.xxx.xxx] PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 71 bytes) in /省略/web/modules/legacyRender/preload/Cacheclear.class.php on line 30, referer: http://www.coderesume.com/modules/legacy/admin/index.php?action=ModuleUpdate&dirname=xxx
それで、Cacheclear.class.php の30行目というのは、以下のようです。
function cacheClear(&$module) { $handler =& xoops_getmodulehandler('tplfile', 'legacyRender'); $criteria =new Criteria('tpl_module', $module->get('dirname')); $tplfileArr = $handler->getObjects($criteria); $xoopsTpl =new XoopsTpl(); → foreach (array_keys($tplfileArr) as $key) { $xoopsTpl->clear_cache('db:' . $tplfileArr[$key]->get('tpl_file')); $xoopsTpl->clear_compiled_tpl('db:' . $tplfileArr[$key]->get('tpl_file')); } }
プリロードというのが、勉強不足で、何をするものか良くわかっていないのですが、
どなたか、アドバイスをお願いします。
なお、今回アップデートしようとしているモジュールとは別のモジュールで、同じようにPHPのメモリエラーになっているものがあったので、これは管理画面から非アクティブにしました。(つい先日、このフォーラムで投稿した件)
なんとなく、そのときにものすごく大きいサイズのtplfileというのを作ってしまって、それが悪さをしている気がします。
coderesume さん、こんにちは。
引用:[Sat Feb 01 02:02:46 2014] [error] [client xxx.xxx.xxx.xxx] PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 71 bytes)
PHP への割り当てメモリが不足しているということですが、現状 php.ini でのメモリ設定 memory_limit が 16M(bytes) になっていると思います。
XOOPS を運用する場合、最低でも 32M (できれば 128M ぐらいあってもいいと思います)は欲しいですので、php.ini が触れる環境なら、 php.ini にて
memory_limit = 128M
とするか、もしくは .htaccess が設置可能であれば XOOPS_ROOT_PATH/.htaccess で
php_value memory_limit 128M
とするか、もしくは はっぴぃ・りなっくす - WFダウンロード で memory_limit を 32MB に設定するプリロードが配布されているので、それをダウンロードし、解凍してできた html/preload/MemoryLimit.class.php を XOOPS_ROOT_PATH/preload へアップロードして下さい。
MemoryLimit.class.php の内容を変更することで、メモリ量も変更できます。
引用:プリロードというのが、勉強不足で、何をするものか良くわかっていないのですが、
XOOPS Cube Legacy におけるプリロードとは、適切なファイルを定められたプリロードディレクトリに配置することで、様々な機能追加や規定動作の換装などが行えるものです。
詳しくは、XOOPS Cubeのプリロードとデリゲートの解説 - Qiita [キータ] とか "XOOPS プリロード" とか "XCL プリロード" などで Web 検索してみてください。
nao-pon さん、ありがとうございます。
php のメモリを上限を64Mにすることで、解決できました。
ありがとうございました。
このあともテンプレートファイルはどんどん追加して行く予定なのですが、メモリはそれに応じて大きくしていくか、モジュールをわけていくかのどちらかになりますか?