- ベストアンサー
ファイルのアップロードについて
- phpのmove_uploaded_fileを使用してアップロードをしようと思うのですがアップロードが出来ません。
- ローカル環境のwindowsでのアップロードは行えるがlinuxでは失敗してしまいます。
- move_uploaded_fileからはエラーは出力されていません。そもそもmove_uploaded_fileが成功しているのになんでアップロードされていないのか分かりません。
- みんなの回答 (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を付加したりファイル名を変更したりするのを一旦やめて 元のファイル名でアップロードした方がファイルが探しやすいかも
お礼
アドバイスありがとうございます。。 返事がかなり遅くなりもうしわけありません 本件につきましては自己解決することができました。 私のしらないソースがあり。後続処理にてアップロードしたファイルを別名退避後に削除していました。