opensource-workshop / connect-cms

コネクトCMS用リポジトリ
https://connect-cms.jp/
MIT License
13 stars 6 forks source link

【データベース・フォーム】(Laravel6テスト)ファイル型項目にファイルをアップするとシステムエラー #732

Closed osws-makino closed 3 years ago

osws-makino commented 3 years ago

概要

ファイル型の項目にファイルを指定して「確定画面へ」ボタンを押すとシステムエラー500

以下で再現 ・まず項目を日付項目で作成する ・一度それで投稿した後、日付項目の属性をファイル型に変更する ・ファイル型のところにファイルを指定して投稿しようとすると「確認画面へ」ボタンを押したところでシステムエラー500が発生 ※Laravel6環境でのみ発生

実行環境

connect-cms.jp 機能テスト データベース のページ Windows10、GoogleChrome

akagane99 commented 3 years ago

対応しました。 フォームも同様の処理があるため、今後修正する予定です。

修正プログラム

https://github.com/opensource-workshop/connect-cms/commit/d3cddf24835534b1992d84dc849751ef2e5957ee

原因

確認画面で下記処理を行っていました。

        // --- 入力値変換
        // 入力値をトリム
        $request->merge(StringUtils::trimInput($request->all()));

bugfix: $request->all()を取得して全て$request->merge()すると、「Serialization of 'Illuminate\Http\UploadedFile' is not allowed」エラーが発生する時があります。 Illuminate\Session\Store.phpでセッションのserialize()を行っており、oldセッションにUploadオブジェクトが混ざるとシリアライズできずにエラーになっていました。

対応

$request->all()で全てトリムする必要はなく、アップロードファイル以外の必要な入力値のみトリムするよう見直しました。

akagane99 commented 3 years ago

フォームも修正しました。

修正プログラム

https://github.com/opensource-workshop/connect-cms/commit/a584c5bb92241df25358e48b84a4c9c89152d77f