前提・実現したいこと
いつもお世話になっております。
現在PHPのみでwebアプリケーションを開発しています。
ローカル環境では画像保存できましたが、heroku環境では正常に動きませんでした。
var_dumpで出力を追いました。下記がエラー文になります。
string(5) "koko1" string(5) "koko2" string(5) "koko3" string(5) "koko4" string(5) "koko5" string(5) "koko6" string(5) "koko7" string(5) "koko8" string(5) "koko9" string(7) "kokoha1" string(7) "kokoha2" Fatal error: Uncaught Error: Call to undefined function exif_imagetype() in /app/PHP/function.php:694 Stack trace: #0 /app/PHP/profEdit.php(54): uploadImg() #1 {main} thrown in /app/PHP/function.php on line 694
exif_imagetype()が定義されていないとなっていますが、ローカル環境では動いていたのにherokuではここでエラーがおきてしまうのか理由がわかっていません。実行したコードが下記です。
function uploadImg($file, $key){ debug('画像アップロード処理開始'); debug('FILE情報:'.print_r($file,true)); var_dump('kokoha1'); if (isset($file['error']) && is_int($file['error'])) { try { // バリデーション // $file['error'] の値を確認。配列内には「UPLOAD_ERR_OK」などの定数が入っている。 //「UPLOAD_ERR_OK」などの定数はphpでファイルアップロード時に自動的に定義される。定数には値として0や1などの数値が入っている。 switch ($file['error']) { case UPLOAD_ERR_OK: // OK break; case UPLOAD_ERR_NO_FILE: // ファイル未選択の場合 throw new RuntimeException('ファイルが選択されていません'); case UPLOAD_ERR_INI_SIZE: // php.ini定義の最大サイズが超過した場合 case UPLOAD_ERR_FORM_SIZE: // フォーム定義の最大サイズ超過した場合 throw new RuntimeException('ファイルサイズが大きすぎます'); default: // その他の場合 throw new RuntimeException('その他のエラーが発生しました'); } var_dump('kokoha2'); // $file['mime']の値はブラウザ側で偽装可能なので、MIMEタイプを自前でチェックする // exif_imagetype関数は「IMAGETYPE_GIF」「IMAGETYPE_JPEG」などの定数を返す $type = exif_imagetype($file['tmp_name']); var_dump('kokomade1'); if (!in_array($type, [IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG], true)) { // 第三引数にはtrueを設定すると厳密にチェックしてくれるので必ずつける var_dump('kokomade2'); throw new RuntimeException('画像形式が未対応です'); var_dump('kokomade3'); } var_dump('kokoha3');
var_dump('kokomade1')が出力されず、エラーが起きています。どういった原因が考えられますでしょうか?
わかる方教えて頂ければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/07 13:51
2020/07/07 13:53
2020/07/07 14:23
2020/07/07 21:02