- このトピックには6件の返信、1人の参加者があり、最後に
により4年前に更新されました。
-
投稿者投稿
-
2021年9月29日 11:20 AM #4165
深
ゲスト画像ファイルを添付して送信しようとすると、送信できず500Serverエラーになります。
テキストのみなら問題なく送信できます。サーバ側のphp.iniや管理画面側のファイルの容量上限を変更してみましたが、
容量の小さいファイルでも添付すると送信できずエラーになります。フォームの項目は下記のように設定しています。
フォームの種類 → ファイル
name属性 → attach_image
id属性 → attach_image
class属性 → form-control
ファイル形式 → .jpg,.jpeg,.png
容量上限(kbyte) → 10240 kbyteフォーラムを拝見しましたがこれといったものが見つけられず、アドバイス頂けますと幸いです。
よろしくお願いいたします。2021年9月29日 11:42 AM #4167EasyMail管理者
キーマスターご投稿いただきありがとうございます。
原因を推測するのが難しいのですが、
サーバーに残っているログを見ることで原因が特定できることがあります。
EasyMailはLaravelを利用しており、ログを記録したファイルは、
サーバー上の em_laravel/storage/logs/laravel.log
になります。
ダウンロードしていただいて、行頭に
[2021-09-29 13:13:54] ******.ERROR
といったようにERRORの文字がついている行がエラーログになっています。
500エラーが出た時刻のログを拝見することができれば、何かしら特定できるかもしれません。
ログには、サーバーのパスなどが記載されていますので、もしこちらに投稿されるときには、
伏字にするなど、編集していただいた方がよろしいかと思います。2021年9月29日 3:15 PM #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)
2021年9月29日 5:15 PM #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)2021年9月29日 6:06 PM #4172EasyMail管理者
キーマスターエラーログを拝見いたしました。
ご指摘のとおり、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())
————-
という様に編集し、サーバーに上書きアップロードしていただくことで、
エラーは回避できるのではないかと思います。
根本的な解決にはなっていないかもしれませんが、一度お試しいただけたらと思います。
※念のためもとに戻せるように、コメントアウトもしくはファイルバックアップをとられてからの作業をお勧めいたします。-
この返信は4年前に
EasyMail管理者が編集しました。
2021年9月29日 6:43 PM #4174深
ゲスト自己解決いたしました。
添付画像つきで送信に成功しました。原因はファイル形式の”指定”にあったようです。
当初下記のように設定していましたが、
ファイル形式 → .jpg,.jpeg,.png変更後
ファイル形式 → image/*下記のページが設定の参考になりました。
お騒がせいたしました。ありがとうございました。2021年9月29日 6:46 PM #4176深
ゲスト投稿が行き違いになったようです。
ご丁寧なご対応を頂きましてありがとうございました。
感謝申し上げます。 -
この返信は4年前に
-
投稿者投稿
- このトピックに返信するにはログインが必要です。