じろう

2019年11月02日に参加

学習履歴詳細

[Laravel]phpのupload_max_filesizeを超えるような画像をアップロードしようとする時、意図しないバリデーションメッセージが出るのを修正

今日のYWT

やったこと

Travelog

バリデーションメッセージの編集

  • laravel.iniupload_max_filesizeを超えるような画像がアップロードされた時、意図したバリデーションメッセージが出なかったのでそれをどうにかしていた
    // バリデーションルールを設定
    public function rules()
    {
        return [
            // 略
            'files.*.photo' => 'bail|image|mimes:jpeg,bmp,png|max:2000',
        ];
    }
    public function attributes()
    {
        return [
            // 略
            'files.*.photo' => 'ファイル',
        ];
    }
    public function messages()
    {
        return [
            // attribute名 . 引っかかったバリデーションルール => 出したいメッセージ
            'end_date.after_or_equal' => '開始日または終了日を確認してください',
            'files.*.photo.max' => 'ファイルサイズが大きすぎます(2MBまで)',
        ];
    }

これで、5MBのpngファイルをアップロードした時、files.*.photosがサイズ制限のmax:2000に引っかかったら、「ファイルサイズが大きすぎます」というメッセージが出ると期待したが、実際は「ファイルのアップロードに失敗しました」と出てしまう。

このmax:2000max:200に変更し、600Kのpngファイルをアップロードしようとすると、意図したバリデーションメッセージである「ファイルサイズが大きすぎます」と表示される。
また、形式のエラーを発生させようと別にgifファイル(サイズ制限はクリア)をアップロードすると、ちゃんと「ファイルにはjpeg, bmp, pngタイプのファイルを指定してください」と表示される。

  • メンターさんから、upload_max_filesizeを大きめに設定して、バリデーションに到達するように調整するとどうか?とあったのでそのように設定
  • また、フォームに形式とファイルサイズの注意書きを追加する

わかったこと

バリデーション

uploadedというバリデーションルールに引っかかってたようなので、このメッセージを編集することで変えられたようだ

ec2でのphp.ini(php設定ファイル)の場所

  • ec2にログインし、 cd /etc
    • cat php.ini ここにある

次やること

  • dockerと向き合う
Docker
Laravel
AWS

2020年12月09日(水)

2.2時間