Bug(バグ) #950
完了if use a gadget was error when a state of the limit functions of mail template is enabled. (メールテンプレートの機能制限が有効の状態でガジェットを使用するとエラーになる)
100%
説明
現象¶
管理画面のデイリーニュースガジェット設定で、フリーエリアガジェットに入力があるとデイリーメールタスクでFatalErrorが発生する
再現環境¶
- OpenPNE3.4.1
- 手嶋屋開発環境
原因¶
include_component()で第三引数に指定するarray('gadget')をテンプレート側で正しく渡せていない。
OpenPNE.yml で is_restrict_mail_template: true として場合に特定のオブジェクト以外は配列に変換されるが、
gadget クラスがその対象に含まれていない事が原因で、配列になってしまっているため、問題が起こっている。
修正内容¶
lib/view/twig/opTemplateRendererTwig.php 内でパラメータの機能制限を行っているので、
パラメータ内に Gadget オブジェクトが存在する場合、配列や除外対象にしないように修正する。
エラー内容¶
PHP Fatal error: Call to undefined method sfOutputEscaperArrayDecorator::getConfig() in /home/hoge/sns/341.hoge.hoge.hoge.jp/apps/pc_frontend/modules/default/templates/_freeAreaMail.php on line 1 PHP Stack trace: PHP 1. {main}() /home/hoge/sns/341.hoge.hoge.hoge.jp/symfony:0 PHP 2. include() /home/hoge/sns/341.hoge.hoge.hoge.jp/symfony:14 PHP 3. sfSymfonyCommandApplication->run() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/command/cli.php:20 PHP 4. sfTask->runFromCLI() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/command/sfSymfonyCommandApplication.class.php:76 PHP 5. sfBaseTask->doRun() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/task/sfTask.class.php:97 PHP 6. openpneSendDailyNewsTask->execute() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/task/sfBaseTask.class.php:68 PHP 7. sfOpenPNEMailSend::sendTemplateMail() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/task/openpneSendDailyNewsTask.class.php:79 PHP 8. sfOpenPNEMailSend::getMailTemplate() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/util/sfOpenPNEMailSend.class.php:128 PHP 9. sfPartialView->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/util/sfOpenPNEMailSend.class.php:94 PHP 10. sfTemplatingComponentPartialView->renderFile() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/view/sfPartialView.class.php:110 PHP 11. sfTemplateEngine->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/view/sfTemplatingComponentPartialView.class.php:67 PHP 12. opTemplateRendererTwig->evaluate() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/SymfonyTemplating/sfTemplateEngine.php:105 PHP 13. sfTemplateRendererTwig->evaluate() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/view/twig/opTemplateRendererTwig.php:26 PHP 14. Twig_Template->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/renderer/sfTemplateRendererTwig.php:37 PHP 15. __TwigTemplate_cc2046e81adfc7a9d32f54ca8fe289cd->display() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/Twig/Template.php:26 PHP 16. include_component() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/Twig/Environment.php(184) : eval()'d code:76 PHP 17. get_component() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/helper/PartialHelper.php:115 PHP 18. sfPartialView->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/helper/PartialHelper.php:155 PHP 19. sfPHPView->renderFile() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/view/sfPartialView.class.php:110 PHP 20. require() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/view/sfPHPView.class.php:75 ---------------------------------------------------------- MySNS http://example.com/ 本日の最新情報 [2010. 04. 09/Fri] [Apr. 09 2010/Fri] ---------------------------------------------------------- Hello .nanana Fatal error: Call to undefined method sfOutputEscaperArrayDecorator::getConfig() in /home/hoge/sns/341.hoge.hoge.hoge.jp/apps/pc_frontend/modules/default/templates/_freeAreaMail.php on line 1 Call Stack: 0.0004 49220 1. {main}() /home/hoge/sns/341.hoge.hoge.hoge.jp/symfony:0 0.0066 359196 2. include('/home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/command/cli.php') /home/hoge/sns/341.hoge.hoge.hoge.jp/symfony:14 0.3605 8125260 3. sfSymfonyCommandApplication->run() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/command/cli.php:20 0.3694 8151220 4. sfTask->runFromCLI() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/command/sfSymfonyCommandApplication.class.php:76 0.3696 8151220 5. sfBaseTask->doRun() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/task/sfTask.class.php:97 1.5532 8528552 6. openpneSendDailyNewsTask->execute() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/task/sfBaseTask.class.php:68 4.4912 27564544 7. sfOpenPNEMailSend::sendTemplateMail() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/task/openpneSendDailyNewsTask.class.php:79 4.5286 27881444 8. sfOpenPNEMailSend::getMailTemplate() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/util/sfOpenPNEMailSend.class.php:128 4.5563 28667996 9. sfPartialView->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/util/sfOpenPNEMailSend.class.php:94 4.5564 28668036 10. sfTemplatingComponentPartialView->renderFile() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/view/sfPartialView.class.php:110 4.5830 29505072 11. sfTemplateEngine->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/view/sfTemplatingComponentPartialView.class.php:67 4.6435 29635224 12. opTemplateRendererTwig->evaluate() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/SymfonyTemplating/sfTemplateEngine.php:105 6.6524 32122572 13. sfTemplateRendererTwig->evaluate() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/view/twig/opTemplateRendererTwig.php:26 8.0212 33277156 14. Twig_Template->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/renderer/sfTemplateRendererTwig.php:37 8.0212 33318144 15. __TwigTemplate_cc2046e81adfc7a9d32f54ca8fe289cd->display() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/Twig/Template.php:26 8.0225 33319752 16. include_component() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/Twig/Environment.php(184) : eval()'d code:76 8.0225 33319752 17. get_component() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/helper/PartialHelper.php:115 8.0380 33337284 18. sfPartialView->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/helper/PartialHelper.php:155 8.0381 33337284 19. sfPHPView->renderFile() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/view/sfPartialView.class.php:110 8.0991 33381976 20. require('/home/hoge/sns/341.hoge.hoge.hoge.jp/apps/pc_frontend/modules/default/templates/_freeAreaMail.php') /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/view/sfPHPView.class.php:75
Masato Nagasawa さんが14年以上前に更新
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を Masato Nagasawa にセット
Masato Nagasawa さんが約14年前に更新
- 題名 を 管理画面のデイリーニュースガジェット設定でフリーエリアガジェットに入力があるとデイリーメールタスクでFatalErrorが発生する から メールテンプレートでガジェットを使用するとエラーになる に変更
include_component()で第三引数に指定するarray('gadget')をテンプレート側で正しく渡せていない事が原因です。
Masato Nagasawa さんが約14年前に更新
- 題名 を メールテンプレートでガジェットを使用するとエラーになる から メールテンプレートの機能制限が有効の状態でガジェットを使用するとエラーになる に変更
Masato Nagasawa さんが約14年前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴 a59c330005f2166f728cf9a23036114d9f9d047a で適用されました。
すでにDB上にテンプレートが存在している場合、
今回のテンプレートへの変更が反映されていない状態になります。
ですが、テンプレートの修正は gadget 要素のみを第三引数に渡す対応であり、
以前の状態のままでも item.gadget 要素は存在しているため動作に問題はありません。(不要な要素を第三引数に渡さない対応)
Masato Nagasawa さんが約14年前に更新
- 題名 を メールテンプレートの機能制限が有効の状態でガジェットを使用するとエラーになる から if use a gadget was error when a state of the limit functions of mail template is enabled. (メールテンプレートの機能制限が有効の状態でガジェットを使用するとエラーになる) に変更
Shogo Kawahara さんが約14年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
Yuma Sakata さんが約13年前に更新
- ステータス を Pending Testing(テスト待ち) から Pending Fixing(修正待ち) に変更
テスト実施したところ #1594 と同じ問題が確認できました。
本チケットとは違う原因かもしれませんので、その場合は #1594 で対応よろしくお願いします。
また以下の問題もあり、本チケットで修正するべき問題か判断できかねますが差し戻します。
メールテンプレートの機能制限が有効の状態でガジェットを使用した時の動作確認(SNSメンバー500人以上)¶
- 試験手順
0. SNSメンバーを500人以上の状態にする
1. 管理画面のデイリーニュースガジェット設定を表示する
2. フリーエリアガジェットの任意の箇所に「tetete」と追記する
3. コンソールから symfony openpne:send-daily-news を実行する
- 試験結果
以下エラーメッセージが表示されて、デイリーニュースが送信できない
Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 64 bytes) in /home/hoge/sns/hoge.jp/lib/view/twig/opTemplateRendererTwig.php on line 99
Yuya Watanabe さんが12年以上前に更新
- ステータス を Pending Fixing(修正待ち) から Accepted(着手) に変更
- 3.6 で発生するか を Yes から Unknown (未調査) に変更
- 3.4 で発生するか を Unknown (未調査) にセット
Yuya Watanabe さんが12年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
Yuya Watanabe さんが12年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
再レビューしました.
note-10 の問題は本チケットとは別の問題であるため,別チケットでの対応がいいと思います.
しかし, #1594 によって別プロセスで実行するという回避策をとったため,メモリが足りないという状態も回避できている可能性があります. note-10 については再調査が必要であると思います.
Shouta Kashiwagi さんが12年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テストOKです。