[PHP-users 6863] upload が行われません

php-users@php.gr.jp php-users@php.gr.jp
Sat, 13 Apr 2002 15:08:19 +0900


皆様、はじめまして。
PHP4を学び始めてまもない者です。
よろしくご指導下さい。

FreeBSD 4.5 上で php 4.1.2 を使っています。

ファイルのアップロードで早速つまずいています。
アップロードが行われず手をやいています。
初歩的な質問で恐縮なのですが、お付き合い頂けると助かります。
次のソースを試しています。

以下は test.php の中身です。
--------------------------------------------ここから
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=shift-jis">
</head> 
<!--ん-->
<body>

<form encrypt="multipart/form-data" action="test.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
送信ファイル名
<input type="file" name="filename" size="30">
<input type="submit" value="go">
</form>

<p>
<?
if($filename != ""){
  print "Ok. You submitted your file. <br>\n";
  print "tmp file name = $filename <br>\n";
  print "file name = $filename_NAME <br>\n";
  print "file size = $filename_SIZE <br>\n";
  print "file type = $filename_TYPE <br>\n";
}else{
  print " Chose your file. <br>\n";
}
?>
</p>

</body>
</html>
--------------------------------------------ここまで

これで、例えば、
/home/asai/bin/filter.pl
をアップロードしようとすると、
--------------------------------------------ここから
Ok. You submitted your file.
tmp file name = /home/asai/bin/filter.pl
file name =
file size =
file type =
--------------------------------------------ここまで
と結果が出力されます。ファイルを指定せずに go ボタンを押すと
Chose your file.
が表示されるので、php スクリプトとしては一応機能しているようです。

<input type="file" name="filename" size="30">
で指定した $filename という変数には tmp_dir に一時的に置かれた
ファイルの名前(php***)が格納されるはずだと思うのですが、
出力結果をみるとクライアント側のpath付きファイル名になっており、
正しくアップロード処理が行われていないようです。

考えられる原因として何があるでしょうか?
php.ini に何か設定は必要でしょうか?

長くなって恐縮ですが、php.ini の関連しそうな

file_uploads = On
upload_tmp_dir = /tmp/
upload_max_filesize = 2M
register_globals = On
; Note - track_vars is ALWAYS enabled as of PHP 4.0.3

も確認はしており、おそらく上記ので問題はないかと思うのですが。
/tmp も world writable になっています。

マンモス本や、http://www.php.gr.jp/ のオンラインマニュアル、メーリング
リスト過去ログ、他いくつかの php 関連のオンラインドキュメント見ましたが、
解決せず、質問させて頂きました。

よろしくコメントお願いします。

淺井