ホーム フォーラム 質問掲示板 ファイルを添付すると送信せずエラーになります

  • このトピックには6件の返信、1人の参加者があり、最後ににより3年前に更新されました。
7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • 投稿者
    投稿
  • #4165
    ゲスト

    画像ファイルを添付して送信しようとすると、送信できず500Serverエラーになります。
    テキストのみなら問題なく送信できます。

    サーバ側のphp.iniや管理画面側のファイルの容量上限を変更してみましたが、
    容量の小さいファイルでも添付すると送信できずエラーになります。

    フォームの項目は下記のように設定しています。
    フォームの種類 → ファイル
    name属性 → attach_image
    id属性 → attach_image
    class属性 → form-control
    ファイル形式 → .jpg,.jpeg,.png
    容量上限(kbyte) → 10240 kbyte

    フォーラムを拝見しましたがこれといったものが見つけられず、アドバイス頂けますと幸いです。
    よろしくお願いいたします。

    #4167
    EasyMail管理者
    キーマスター

    ご投稿いただきありがとうございます。
    原因を推測するのが難しいのですが、
    サーバーに残っているログを見ることで原因が特定できることがあります。
    EasyMailはLaravelを利用しており、ログを記録したファイルは、
    サーバー上の em_laravel/storage/logs/laravel.log
    になります。
    ダウンロードしていただいて、行頭に
    [2021-09-29 13:13:54] ******.ERROR
    といったようにERRORの文字がついている行がエラーログになっています。
    500エラーが出た時刻のログを拝見することができれば、何かしら特定できるかもしれません。
    ログには、サーバーのパスなどが記載されていますので、もしこちらに投稿されるときには、
    伏字にするなど、編集していただいた方がよろしいかと思います。

    #4168
    ゲスト

    ありがとうございます。
    エラーログは下記のようになっていました。

    [2021-09-29 11:04:25] production.ERROR: strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior {“userId”:1,”exception”:”[object] (ErrorException(code: 0): strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior at ~ /em_laravel/app/Rules/UploadFileRule.php:45)

    #4170
    ゲスト

    エラーログの続きで下記のようになっているのですが、
    strpos関数の第二引数は、文字列でなければならないと思うのですが
    trueを代入しているのが気になりました。

    [stacktrace]
    #0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(8192, ‘strpos(): Non-s…’, ‘/ ~  /…’, 49, Array)
    #1 / ~ /em_laravel/app/Rules/UploadFileRule.php(49): strpos(‘.jpg,.jpeg,.png’, true)

    #4172
    EasyMail管理者
    キーマスター

    エラーログを拝見いたしました。
    ご指摘のとおり、em_laravel/app/Rules/UploadFileRule.phpのstrpos()の第2引数が原因のようです。
    $value->guessClientExtension()が返してきている値がtrueになっているようなのですが、
    なんでtrueを返してきているのかが、もう少し調べてみないとわかりません。
    この部分は送信しようとしている添付ファイルの拡張子をサーバー上でチェックしているコードです。
    弊社で動作させているサーバー(PHP7.4.13)ではエラーはなく正常に動作しているようなのです。
    引き続き調べてみますが、取り急ぎなんとか動作させるために、
    em_laravel/app/Rules/UploadFileRule.phpの39行目付近からのコードを
    ————-
    else if ( strpos( $this->file_type, $value->guessClientExtension() ) !== false ) {

    else if ( strpos( $this->file_type, strval($value->guessClientExtension()) ) !== false ) {
    ————-
    数行guessClientExtension()が書かれているコードが連続しておりますが、
    ————-
    $value->guessClientExtension()

    strval($value->guessClientExtension())
    ————-
    という様に編集し、サーバーに上書きアップロードしていただくことで、
    エラーは回避できるのではないかと思います。
    根本的な解決にはなっていないかもしれませんが、一度お試しいただけたらと思います。
    ※念のためもとに戻せるように、コメントアウトもしくはファイルバックアップをとられてからの作業をお勧めいたします。

    #4174
    ゲスト

    自己解決いたしました。
    添付画像つきで送信に成功しました。

    原因はファイル形式の”指定”にあったようです。
    当初下記のように設定していましたが、
    ファイル形式 → .jpg,.jpeg,.png

    変更後
    ファイル形式 → image/*

    下記のページが設定の参考になりました。

    ファイル添付ができる無料のメールフォーム11選


    お騒がせいたしました。ありがとうございました。

    #4176
    ゲスト

    投稿が行き違いになったようです。
    ご丁寧なご対応を頂きましてありがとうございました。
    感謝申し上げます。

7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • このトピックに返信するにはログインが必要です。
あなたのサイトでEasyMailを
活用してください。

高機能で無料のメールフォーム「EasyMail」を
ぜひお試しください!