スレッド表示 | フラット表示〕 全トピック 920 件中 464 番目 次≫ ≪前

何がおかしいのか不明です…(>_<)

created: 2005-03-09 17:46 | modified: 2005-03-10 11:14 | reply: 3

[2161] 何がおかしいのか不明です…(>_<)

user: YABUKI | created: 2005-03-09 17:46
とあるサンプルプログラムを実行してましたが、どこが間違っているのか不明です。
どなたか、以下の警告メッセージわかりますでしょうか?
http://localhost/test/submit.phpで、“http://localhost/test/img/test.jpg”のファイルをアップロードさせました。
しかし、どこにもtest.jpgはアップされず、以下の警告が画面出力されました。
当方のPHP環境がおかしいのでしょうか?
ちなみに“PHP Version 4.3.10”と“PHP Version 5.0.3”で動作させてみました。


-----PHP Version 4.3.10環境で動作させた結果-----
Warning: move_uploaded_file(./doc/test.jpg): failed to open stream: No such file or directory in C:\apachefriends\xampp\htdocs\test\upload.php on line 27

Warning: move_uploaded_file(): Unable to move 'C:\DOCUME~1\ohkawa\LOCALS~1\Temp\php121.tmp' to './doc/test.jpg' in C:\apachefriends\xampp\htdocs\test\upload.php on line 27

-----PHP Version 5.0.3環境で動作させた結果-----
Warning: move_uploaded_file(./doc/test.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\apachefriends\xampp\htdocs\test\upload.php on line 27

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\DOCUME~1\ohkawa\LOCALS~1\Temp\php124.tmp' to './doc/test.jpg' in C:\apachefriends\xampp\htdocs\test\upload.php on line 27


--------------------------------submit.php----------------------------------
<html>
<head>
<title>ファイルのアップロード</title>
</head>
<body>
<h1>ファイルのアップロード</h1>
<form method="post" action="upload.php" enctype="multipart/form-data">
 <input type="hidden" name="max_file_size" value="1000000" />
 <table border="0">
  <tr>
   <th align="right" valign="top">アップロードファイル:</th>
   <td>
    <input name="fl[]" type="file" size="60"><br />
    <input name="fl[]" type="file" size="60"><br />
    <input name="fl[]" type="file" size="60"><br />
    (上書不可)<input type="checkbox" name="frb" value="true" checked />
    <input type="submit" value="アップロード" />
   </td>
  </tr>
 </table>
</form>
</body>
</html>
--------------------------------upload.php----------------------------------
<html>
<head>
<title>アップロード結果</title>
</head>
<body>
<h1>アップロード結果</h1>
<table border="1" width="350">
<tr>
<th>ファイル名</th><th>サイズ</th><th>MIMEタイプ</th>
</tr>
<?php
$num=0;
for($i=0;$i<sizeof($_FILES['fl']['name']);$i++){
 if($_FILES['fl']['name'][$i]==""){continue;}
 if(file_exists("./doc/".mb_convert_encoding($_FILES['fl']['name'][$i],"SJIS","EUC-JP"))==TRUE && $_POST['frb']=="true"){
  $num++;
 }elseif(!is_uploaded_file($_FILES['fl']['tmp_name'][$i])){
  $num++;
}else{
?>
<tr>
 <td align="right"><?php print($_FILES['fl']['name'][$i]); ?></td>
 <td align="right"><?php print($_FILES['fl']['size'][$i]); ?>Byte</td>
 <td align="right"><?php print($_FILES['fl']['type'][$i]); ?></td>
</tr>
<?php
 move_uploaded_file($_FILES['fl']['tmp_name'][$i],"./doc/".mb_convert_encoding($_FILES['fl']['name'][$i],"SJIS","EUC-JP"));
 }
}
if($num>0){
 print("<div style='color:red'>".$num."件がアップロードに失敗しました</div>");
}
?>
</table>
</body>
</html>
reply: 2164 2165 2167 返信 編集 削除

[2164] お待たせしました

user: オレンジ | created: 2005-03-10 01:56
こんばんわ。
私も初心者ですが、
アップロードに関してはそこそこわかります。
その参考書持っていますが、
私の環境ではコード通りにすれば
動作しました。
実際YABUKIさんがおっしゃるエラー画面を表示させることができましたが、
その場合はアップロード先のファイル
(そのサンプルの場合はdoc)
が存在していない時です。
submit.phpとupload.phpがある場所と同じ場所、
例えばsampleというフォルダの中にあるなら、
その中にdocというフォルダを新しく作る必要があります。
原因はそれ以外に考えられませんです。
バージョンとかは関係ないと思います。

ただ、
もしYABUKIさんがPHP初心者であれば
そのサンプルコードはちょっと難しいかも知れませんので、
念のため簡単なアップロードのサンプルを作っておきますね。

test.php  (ファイル名)
---------------------------------------
<html>
<head>
<title>ファイルのアップロード</title>
</head>
<body>
<form method="post" action="test.php" enctype="multipart/form-data">
<input type="hidden" name="max_file_size" value="1000000" />
アップロードファイル:
<input type="file" name="up" size="60" />
<input type="submit" value="アップロード" />
</form>
</body>
</html>

test2.php
--------------------------------------
<?php

//アップロードしたファイルを保存するフォルダ名(必ず作っておくこと) ./ とはtest.phpがある場所と同じ場所をさしています。
//ここではdataというフォルダを作っています。
$updir = "./data/";

$filename = $_FILES['userfile']['name'];
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $updir.$filename) == FALSE){
print ("アップロードに失敗しました");
print($_FILES['upfile']['error']);
}else {
print("アップロードに成功しました!<b>" . $filename . "</b>");
}

?>

また基礎から覚えたいのでしたら、
参考書は「改訂版 基礎PHP(山田祥寛)」
の方がわかりやすいと思います。

他にも基礎を紹介しているサイトはたくさんあります。

では。
Parent: 2161  返信 編集 削除

[2165] コードの簡素化

user: ゆうじ | created: 2005-03-10 01:58
http://localhost/test/doc/test.jpg
にアップロードしようとしてるんですよね。
/doc ってディレクトリが存在してないとか。

もっとコードを簡素化して検証してみてはいかがでしょう。
簡素化してもおかしいなら環境ということも考えられます。
簡素化して問題ないならコードが問題でしょう。
ならばサンプルプログラムの発行元に確認するのがベストだと思います。
Parent: 2161  返信 編集 削除

[2167] Re:何がおかしいのか不明です…(>_<)

user: YABUKI | created: 2005-03-10 11:14
ゆうじ様>
おっしゃるとおり、/docが存在していないだけでした。
コードの簡素化ですが、このサンプルは複雑な方なのですかね?

>オレンジさま
どうもご丁寧にありがとうございました!
大変、助かりました。
言われてみて、サンプルのソースを見直してみたところ、
簡単なことでした・・・お恥ずかしい限りです。
docフォルダを作成したところ、正常動作いたしました。
また、"./doc/"の部分を、任意のフォルダ名にして動作させたところ、同様に正常動作いたしました。
で、教えていただいた書籍「基礎PHP改訂新版」を、早速ネットで注文しました。
ただ、お教えいただいたサンプルも動作させてみたのですが、何故かファイルがアップされませんでした…(>_<)
dataフォルダはきちんと配下に作ってあるのですが・・・

以上、ありがとうございました。
これからもPHPの習得に向けて、努力していきたいと思っておりますので、また壁にぶつかったときには、どうか手解きの程をよろしくお願い致します。
PHPと同時にMySQLあたりもマスターしたいと思っていますので。
m(_"_)m
Parent: 2161  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 464 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑