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

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

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

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

Q&A

解決済

1回答

1469閲覧

ファイルアップロードでうまくアップロードできません。

toss

総合スコア56

PHP

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

0グッド

0クリップ

投稿2016/10/24 09:33

サーバー:AMAZONAWS AMIMOTO ec2

fileuploadでうまくアップロードされません。
エラーの内容は以下のものになります。

php

1Warning: preg_replace(): Unknown modifier '/' in /var/www/ 2,,,,,,,,,,,,,,,,,,,,,,,,, on line 46

urlは,,,とさせていただきました。
他のサイトではこちらでちゃんと動いていますが、今回はエラーになります・
正規表現が全くわからないので、お力を貸していただけると幸いです。

php

1//ファイルアップロード 2 if (is_uploaded_file($_FILES["photo"]["tmp_name"])) 3 { 4 $path = $_FILES['photo']['tmp_name']; 5 $datetime = new DateTime(); 6 $datetime = $datetime->getTimestamp(); 7 $mime = shell_exec('file -bi '.escapeshellcmd($path)); 8 $mime = trim($mime); 9 $mime = preg_replace("/ [^ ]*//*", "", $mime); 10 if($mime == "image/jpeg;"){ $mimetype = ".jpg"; } 11 if($mime == "image/jpg;"){ $mimetype = ".jpg"; } 12 if($mime == "image/png;"){ $mimetype = ".png"; } 13 if($mime == "image/gif;"){ $mimetype = ".gif"; } 14 if($mimetype == ".jpg" or $mimetype == ".png" or $mimetype == ".gif" ){ 15 16 if(move_uploaded_file($_FILES["photo"]["tmp_name"], 17 "〜〜〜〜〜〜〜画像をアップしたい場所を指定します。〜〜〜〜〜〜〜〜".$datetime. $mimetype)) 18 { 19 chmod("images/".$datetime. $mimetype, 0644); 20 $img=$datetime.$mimetype;//アップデート用の変数 21 $img = mb_convert_encoding($img, "auto", "auto"); 22 } 23 else 24 { 25 $error[0]="画像をアップロードできません"; 26 $errorcd="1"; 27 } 28 $mimetypeError = 0; 29 }else{ $mimetypeError = 1;} 30 } 31

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

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

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

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

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

guest

回答1

0

ベストアンサー

mime typeを取得するだけであればshel_execは危険なので使わない方がいいかもしれません。
file_infoを使ってはいかがでしょう。

php

1$finfo = new finfo(FILEINFO_MIME_TYPE); 2$mime = $finfo->file('path/to/hoge.png');

投稿2016/10/24 09:47

編集2016/10/24 09:49
takepieee

総合スコア686

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

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

toss

2016/10/25 03:52

ご回答ありがとうございます。 $mime = shell_exec('file -bi '.escapeshellcmd($path)); の所を $finfo = new finfo(FILEINFO_MIME_TYPE); $mime = $finfo->file($path); としましたが、うまくいきませんでした。(エラーは消えましたが、保存されていませんでした) よろければ、全体のコードをはりつけていただけないでしょうか?
takepieee

2016/10/25 04:26

全体を貼るのは趣旨に反すると思いますので別の方法で。 $file_info = getimagesize($path); $mime = $file_info["mime"]; getimagesizeのmime出力は下記をご参照下さい。 http://php.net/manual/ja/function.image-type-to-mime-type.php 開発中は$mimeを設定後に echo $mime; なり var_dump($mime); なりを取得後に入れて、どんな値がセットされるのかをチェックしてくださいね。
toss

2016/10/27 05:49

takapieeeさま ありがとうございます。 上記の方法でうまくいきました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問