phpのmove_uploaded_fileを使用してアップロードをしようと思うのですがアップロードが出来ません。
状況は
ローカル環境のwindowsでのアップロードは行えるがlinuxでは失敗してしまいます。
move_uploaded_fileからはエラーは出力されていません
そもそもmove_uploaded_fileが成功しているのになんでアップロードされていないのか分かりません。
//■HTML
<form name="form1" method="post" action="upload.php" ENCTYPE="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="10485760" />
<table class="frm" id="tbl">
<tr><th>ファイル1<div id="image"></div></th>
<td>
画像<input id="img_1" type="file" name="image[]" class="fname" onChange=imageChange(this); /><br />
</td></tr>
<tr>
<th>ファイル2<div id="image"></div></th>
<td>
画像<input id="img_2" type="file" name="image[]" class="fname" onChange=imageChange(this); /><br />
</td> </tr>
</table>
</form>
//■phpで以下のコードを実行すると
oreach ($_FILES["image"]["error"] as $key => $error) { //複数のファイルをアプロード
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["image"]["tmp_name"][$key]; //テンポラリファイルパス
$name = $_FILES["image"]["name"][$key]; //アップロードファイル名
$size = $_FILES["image"]["size"][$key]; //アップロードファイルサイズ
$ermsg = $_FILES['image']['error'][$key]; //エラーメッセージ
echo "アップロードファイル名".$name."\n" ;
echo "アップロードファイルsize" .$size ."\n" ;
echo "errmsg= .$ermsg."\n" ;
// ファイルアップロード
$cnt++;
if ( move_uploaded_file($tmp_name, "../1/33/.$cnt."2upload.jpg
")){ //ファイルアップロード
echo "アップロード成功 .$ermsg."\n" ;
echo " テンポラリファイル="$tmp_name."\n";
echo " アップロードファイル="$dir_img."/".$cnt.UPLOAD_FILE_NAME."\n";
} else {
echo 1;
error_log("upload error! \n", 3, MATCHING_ERROR_LOG);
exit;
}
}
}
exit;
■結果
アップロードファイル名thum6.jpg
アップロードファイルsize=10104
errmsg= 0
アップロード成功
テンポラリファイル=/tmp/phpMvCzgo
アップロードファイル=../1/33/1upload.jpg
アップロードファイル名 thum3.jpg
アップロードファイルsize=11528
errmsg= 0
アップロード成功
テンポラリファイル=/tmp/php5Q4kIL
アップロードファイル=../1/33/2upload.jpg
テンポラリの/tmpは777のため権限に問題ないです
php.iniの設定
upload_max_filesize=2m post_max_size=8m memory_limit=128m
今回のアップロードファイルのサイズから問題なし
file_uploads=onなので問題ありませんでした
これでなにかわかる方いらっしゃいましたら教えてください。
No.1ベストアンサー
- 回答日時:
大きく2つ述べておきます。
大1.
ソースが整理されていないし文法エラーもあります。
この部分
if ( move_uploaded_file($tmp_name, "../1/33/.$cnt."2upload.jpg ←""の閉じ具合がおかしい
")){ //ファイルアップロード
echo "アップロード成功 .$ermsg."\n" ; ←""の閉じ具合がおかしい
echo " テンポラリファイル="$tmp_name."\n"; ←.が足りない
echo " アップロードファイル="$dir_img."/".$cnt.UPLOAD_FILE_NAME."\n"; ←.が足りない
私であれば修正を最小限にしつつ次のように書くかな。
$lastname = $dir_img."/".$cnt.UPLOAD_FILE_NAME;
if ( move_uploaded_file($tmp_name, $lastname) ){ //ファイルアップロード
echo "アップロード成功" .$ermsg."<br />\n" ;
echo " テンポラリファイル=".$tmp_name."<br />\n";
echo " アップロードファイル=".$lastname."<br />\n";
まあアップロード成功メッセージまで行っているようなのでソースの写し間違い箇所
もあるかもしれませんが、それはそれで注意していただきたいものです。
とにかくmove_uploaded_file()の引数と、その後のecho対象が違う方式で書かれているのが
気になります。
ご本人は同じつもりでしょうが、同じものは同じ変数(ここでは$lastname)に整理
しておいたほうがしょうもないミスを防ぐことができてよいと思います。
大2.
ファイルの探し方の問題かもしれませんね。
アップロード成功メッセージまで行っているんですからどこかにファイルが出来て
いるはずです。
まさかと思うようなところまで探してみましょう。
それに際しアドバイスがいくつかあります。
(1)Linuxのfindコマンドを駆使しましょう。可能なら一番上の/から探しましょう。
(2)何らかの理由で.で始まるファイル名になっていた場合lsでは見れないので
ls -aで見ましょう。
もしそうだったらファイル名の先頭に.がつかないようにソースを見直しましょう。
(3)ファイル名に$cntを付加したりファイル名を変更したりするのを一旦やめて
元のファイル名でアップロードした方がファイルが探しやすいかも
アドバイスありがとうございます。。
返事がかなり遅くなりもうしわけありません
本件につきましては自己解決することができました。
私のしらないソースがあり。後続処理にてアップロードしたファイルを別名退避後に削除していました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onedrive にexcelファイルをア...
-
one drive のアップロード失敗...
-
FTP接続の例外処理
-
FTPClientで転送結果(OKかFAIL)
-
PHPMailerで大きなファイルが送...
-
ファイルをGET送信でアップロー...
-
aws cloud9というものを使って...
-
youtubeに音声のみのmp4ファイ...
-
複数ファイルのアップロードに...
-
画面遷移させずに、選択画像フ...
-
ftpでアップロードが出来ない
-
movabletypeでPDFファイルをア...
-
ファイルアップロードについて...
-
PHP 画像アップロード 重複防止
-
ファイルアップロードの上限を...
-
「クラウドにアップロード」」...
-
PHPのWARNINGをcatchするには
-
フォントの色を変えるには?
-
phpでPEAR::DBを使っているので...
-
別ファイルの変数を呼び出した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onedrive にexcelファイルをア...
-
one drive のアップロード失敗...
-
youtubeに音声のみのmp4ファイ...
-
wixの使い方について
-
ftpでアップロードが出来ない
-
「クラウドにアップロード」」...
-
ファイルサイズがpost_max_size...
-
VBでクラウドストレージにア...
-
大容量のファイルアップロード...
-
画像ファイルの名前をそのままU...
-
どうして送信されないのでしょ...
-
ファイルアップロードの上限を...
-
PHPでxmlをAPIに送信する方法(P...
-
ファイルをGET送信でアップロー...
-
unlinkでどうしてもファイルが...
-
FTPClientで転送結果(OKかFAIL)
-
ファイルのアップロードでパス...
-
$filePath = './user_img/' . $...
-
FTP接続の例外処理
-
move_uploaded_fileについて
おすすめ情報