テーマ用初期データダウンロードで、 Allowed memory size of

テーマ用初期データダウンロードで、 Allowed memory size of

つまりメモリーが足りてないよ、って言うことですが、
一時的に、次の1行を追加すればダウンロードできました。

app/Config/install.php

ini_set(“memory_limit”, “-1”);

ダンロードしたら、削除するなりコメントアウトするなりした方が良いと思います。
定期的にやるのでメモ代わりに載せました。

2 Likes

lib/Baser/Controller/ThemesController.php
上記ファイルのadmin_download_default_data_pattern()メソッド内で、

	public function admin_download_default_data_pattern()
	{
		set_time_limit(0);
		ini_set('memory_limit', -1);

上記のように書いても同様に動作しますでしょうか?
これで問題なければコア改善として提案してみます。

動作するとは思いますが、サーバーにより動作しないことも考えられるので、
どうなんだろう?と思ったりします。
とはいえ、コアに含まれれば個人的にはありがたいです。

suhosinの影響などでmemory_limit()関数自体が期待どおりに動作しないことは
あると思いますが、-1指定で制限を外すこと自体が機能しないことは
なさそうな気がします。いずれにしても、このコードを追記すること自体で
今まで動作していたものが動作しなくなることはなさそうに思います。
もしよければコア改善で出しておきますね。

1 Likes

提案が採用されたので次の4.4.5から有効になります。

1 Likes

@yamamoto

私の環境では、app/Config/install.phpへの記述では、メモリーサイズの回避は可能でしたが、
yamamotoさんのご提案のlib/Baser/Controller/ThemesController.phpへの対応では、以下のエラーが出てメモリーサイズの制限回避はできませんでした。

   2021-03-25 15:25:42 Error: Fatal Error (1): Allowed memory size of 134217728 bytes exhausted (tried to allocate 80095390 bytes) in [/Volumes/Data/basercms444/lib/Baser/Vendor/Simplezip.php, line 323]
    2021-03-25 15:25:42 Error: [InternalErrorException] Internal Server Error
    Request URL: /admin/themes/download
    Stack Trace:
    #0 /Volumes/Data/basercms444/lib/Cake/Error/ErrorHandler.php(212): ErrorHandler::handleFatalError(1, 'Allowed memory ...', '/Volumes/Data/b...', 323)
    #1 /Volumes/Data/basercms444/lib/Cake/Core/App.php(970): ErrorHandler::handleError(1, 'Allowed memory ...', '/Volumes/Data/b...', 323, Array)
    #2 /Volumes/Data/basercms444/lib/Cake/Core/App.php(943): App::_checkFatalError()
    #3 [internal function]: App::shutdown()
    #4 {main}

また、app/Config/install.phpへの記述でメモリーサイズの制限は回避されzipのダウンロードは、見かけ上できたかに思えたのですが、別の問題があるように思います。
確かに上記の対応で、見かけ上、zipファイルは生成されますが、
生成された「テーマダウンロード」(テーマ用初期データではありませんが事情は同じだと)のzipファイルを「テーマ新規追加」項目から選択し、適用させようとするとエラーになります。

zipファイルがうまく生成できていないように思います。
ちなみに、エラーlogを確認してみると、以下のような警告メッセージが出ています。

2021-03-25 15:10:05 Warning: Warning (2): fread(): Length parameter must be greater than 0 in [/Volumes/Data/basercms444/lib/Baser/Vendor/Simplezip.php, line 100]
Trace:
ErrorHandler::handleError() - CORE/Cake/Error/ErrorHandler.php, line 230
fread - [internal], line ??
Simplezip::addFolder() - CORE/Baser/Vendor/Simplezip.php, line 100
Simplezip::addFolder() - CORE/Baser/Vendor/Simplezip.php, line 104
Simplezip::addFolder() - CORE/Baser/Vendor/Simplezip.php, line 104
Simplezip::addFolder() - CORE/Baser/Vendor/Simplezip.php, line 104
Simplezip::addFolder() - CORE/Baser/Vendor/Simplezip.php, line 104
ThemesController::admin_download() - CORE/Baser/Controller/ThemesController.php, line 682
ReflectionMethod::invokeArgs() - [internal], line ??
Controller::invokeAction() - CORE/Cake/Controller/Controller.php, line 499
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 193
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 167
[main] - ROOT/index.php, line 123

2021-03-25 15:10:05 Warning: Warning (2): fread() [<a href='http://php.net/function.fread'>function.fread</a>]: Length parameter must be greater than 0 in [/Volumes/Data/basercms444/lib/Baser/Vendor/Simplezip.php, line 100]
Trace:
ErrorHandler::handleError() - CORE/Cake/Error/ErrorHandler.php, line 230
fread - [internal], line ??
Simplezip::addFolder() - CORE/Baser/Vendor/Simplezip.php, line 100
Simplezip::addFolder() - CORE/Baser/Vendor/Simplezip.php, line 104
Simplezip::addFolder() - CORE/Baser/Vendor/Simplezip.php, line 104
Simplezip::addFolder() - CORE/Baser/Vendor/Simplezip.php, line 104
Simplezip::addFolder() - CORE/Baser/Vendor/Simplezip.php, line 104
ThemesController::admin_download() - CORE/Baser/Controller/ThemesController.php, line 682
ReflectionMethod::invokeArgs() - [internal], line ??
Controller::invokeAction() - CORE/Cake/Controller/Controller.php, line 499
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 193
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 167
[main] - ROOT/index.php, line 123

テスト環境:
MAMP v.6.3
PHP 7.3.24
baserCMS 4.4.4
MySQL 5.7.32

※LOLIPOPのホスティングサーバー上でも同様です。
PHP 7.3.20
baserCMS 4.4.4