ホーム > フォーラム > 開発 > モジュール開発 > $modversion['templates'][303]['file'] 303個目があると、モジュールのアップデートに失敗する

$modversion['templates'][303]['file'] 303個目があると、モジュールのアップデートに失敗する
投稿者: coderesume | 投稿日時: 2014/1/30 20:13 | 閲覧: 8609回
coderesume

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)

新しいものから | 古いものから | ネスト表示 | RSS feed
Re: $modversion['templates'][303]['file'] 303個目があると、モジュールのアップデートに失敗する 
投稿者: coderesume | 投稿日時: 2014/2/1 2:17
coderesume

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というのを作ってしまって、それが悪さをしている気がします。

Re: $modversion['templates'][303]['file'] 303個目があると、モジュールのアップデートに失敗する 
投稿者: nao-pon | 投稿日時: 2014/2/1 10:35 | 親コメント: #21411
nao-pon

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 検索してみてください。 :-)

Re: $modversion['templates'][303]['file'] 303個目があると、モジュールのアップデートに失敗する 
投稿者: coderesume | 投稿日時: 2014/2/1 17:45 | 親コメント: #21412
coderesume

nao-pon さん、ありがとうございます。

php のメモリを上限を64Mにすることで、解決できました。
ありがとうございました。

Re: $modversion['templates'][303]['file'] 303個目があると、モジュールのアップデートに失敗する 
投稿者: coderesume | 投稿日時: 2014/2/1 18:09 | 親コメント: #21414
coderesume

このあともテンプレートファイルはどんどん追加して行く予定なのですが、メモリはそれに応じて大きくしていくか、モジュールをわけていくかのどちらかになりますか?

Re: $modversion['templates'][303]['file'] 303個目があると、モジュールのアップデートに失敗する 
投稿者: nao-pon | 投稿日時: 2014/2/4 9:28 | 親コメント: #21415
nao-pon
引用:
このあともテンプレートファイルはどんどん追加して行く予定なのですが、メモリはそれに応じて大きくしていくか、モジュールをわけていくかのどちらかになりますか?

そうですね。テンプレートの増加が際限がないのであれば、XOOPS のシステム上のテンプレートを利用するのは無理があると思います。

テンプレートの増加に限りがないのでしたら、独自にファイルテンプレートを用意して、レンダリング時にそのファイルテンプレートを適宜使用するようにしたほうがよいかも知れません。

Re: $modversion['templates'][303]['file'] 303個目があると、モジュールのアップデートに失敗する 
投稿者: coderesume | 投稿日時: 2014/2/6 0:25 | 親コメント: #21419
coderesume

回答ありがとうございます。わかりました。

    投票(0)

    新しいものから | 古いものから | RSS feed
     
    To Top