
じろう
2019年11月02日に参加
学習履歴詳細
[Laravel]phpのupload_max_filesizeを超えるような画像をアップロードしようとする時、意図しないバリデーションメッセージが出るのを修正
今日のYWT
やったこと
Travelog
バリデーションメッセージの編集
laravel.ini
のupload_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:2000
をmax: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時間