質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

2189閲覧

画像投稿掲示板で、データサイズが大きすぎるときにエラーが表示されない。

hiya_yakko10

総合スコア11

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/07/23 11:32

前提・実現したいこと

MySQLで、画像・動画投稿機能のある掲示板を作成しています。
画像・動画のデータサイズが大きすぎるときに、”ファイルサイズが大きすぎます”と表示させたいのですが、実際に大きすぎるファイルを投稿しようとすると、実際に投稿されることもなければ、エラーメッセージ($errormes)も出ません。
投稿が出来ないようになっているのは良いのですが、エラーも表示されないのはなぜなのでしょうか。

該当のソースコード

}if(!empty($_FILES['file']['name'])){ //----ファイルのアップロード時------ //ファイルアップロードがあったとき if ($_FILES['file']['error'] !== 0 && is_int($_FILES['file']['error']) && $_FILES["file"]["name"] !== ""){ /*is_int:変数が整数型かどうか検査*/ $errormes = ""; //エラーチェック(switchは条件式) switch ($_FILES['file']['error']) { case UPLOAD_ERR_OK: // OK break; case UPLOAD_ERR_NO_FILE: // 未選択 $errormes ="※ファイルが選択されていません" ; case UPLOAD_ERR_INI_SIZE: // php.ini定義の最大サイズ超過 $errormes ="※ファイルサイズが大きすぎます" ; default:/*それ以外*/ $errormes ="※その他のエラーが発生しました" ; } echo "<font color =\"#db7093\">$errormes </font>"; }else{ //画像・動画をバイナリデータにする. $images = file_get_contents($_FILES['file']['tmp_name']); //拡張子を見る $tmp = pathinfo($_FILES["file"]["name"]); //ファイル名や拡張のみを取得 $extension = $tmp["extension"]; if($extension === "jpg" || $extension === "jpeg" || $extension === "JPG" || $extension === "JPEG"){ $extension = "jpeg"; } elseif($extension === "png" || $extension === "PNG"){ $extension = "png"; } elseif($extension === "gif" || $extension === "GIF"){ $extension = "gif"; } elseif($extension === "mp4" || $extension === "MP4"){ $extension = "mp4"; } else{ echo "非対応ファイルです.<br/>"; exit(1); } //DBに格納するファイルネーム設定 //サーバー側の一時的なファイルネームと取得時刻を結合した文字列にsha256をかける. $date2 = getdate(); $fname = $_FILES['file']['tmp_name'].$date2["year"].$date2["mon"].$date2["mday"].$date2["hours"].$date2["minutes"].$date2["seconds"]; $fname = hash("sha256", $fname); //画像・動画をDBに格納. $sql = $pdo -> prepare("INSERT INTO imageboard(name, comment, date, pass, fname, extension, images) VALUES (:name, :comment, :date, :pass, :fname, :extension, :images)"); $sql -> bindParam(':name', $name, PDO::PARAM_STR); $sql -> bindParam(':comment', $comment, PDO::PARAM_STR); $sql -> bindParam(':date', $date, PDO::PARAM_STR); $sql -> bindParam(':pass', $pass, PDO::PARAM_STR); $sql -> bindValue(':extension', $extension, PDO::PARAM_STR); $sql -> bindValue(':fname', $fname, PDO::PARAM_STR); $sql -> bindValue(':images', $images, PDO::PARAM_STR); $sql -> execute(); } }

試したこと

試したところ10秒の動画は投稿できます。
15秒を投稿すると”その他のエラーが発生しました"が表示されます。
30秒を投稿すると、再読み込みされた後何も変化が起きません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

phpでファイルサイズを判定する場面まで処理が進まないということは、
それ以前に、
webサーバープログラム(apache httpdとかNginxとか)上の設定や
php.iniでの設定で、
webクライアント(webブラウザ)からのリクエストの許容サイズを越えていて、
phpに取り次いでいない状態だと察します。

それを確認するのにまずアクセスログとエラーログを点検して、
ファイルをアップロードしたときのログがどう記録されているのか、
確認してください。
画面上にエラーメッセージが表示されないのは
表示しないようにサーバープログラムに設定が施されているからです。
表示しない場合にも、エラーログなどに情報が残るはずですので、
そこを確認します。

あと、こういうまとめ記事も一読して対策を検討してください。
PHPを用いた入力フォームの「ファイルアップロードサイズ制限」にまつわる覚書 - Qiita

投稿2019/07/23 11:52

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

問題はファイルサイズだと思います。
PHPマニュアルの下記もご確認ください。

投稿2019/07/23 12:21

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問