プロが教える店舗&オフィスのセキュリティ対策術

お世話になっております。

PHPにてファイルのアップロードを行うプログラムを書いています。
しばらく安定動作していたので問題はないと考えていたのですが、ふとPOSTされた$_FILESの['name']の値を見ると、正しく格納されていません。
具体的には、必ず1Byte目が消失しています。
そのため、全角のファイル名は文字化けを起こします。
他の要素は正しく格納されており、['error']の値は0です。

ex) abc.txt → bc.txt
ex) 1.txt → .txt

思い当たる節がなく、いったいどこに原因があるのか検討もつきません。
心当たりのある方がいらっしゃいましたら、是非ともご教授ください。
以下に環境を掲載しますが、他に必要な項目があれば追記致します。


-------------------------------------------------
○サーバ
・Windows Server2008 R2
・Apache 2.2.21
・PHP 5.3.8

○クライアント
・IE8.0、FireFox、Google Chrome,Safariで確認

○index.php(UTF-8) ※抜粋しています
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<form method="post" enctype="multipart/form-data" action="./upload.php">
<input type="file" name="files" />
<input type="submit" value="送信" />
</form>

○upload.php(UTF-8)
<?php
mb_language('uni');
mb_internal_encoding('utf-8');
mb_http_input('auto');
mb_http_output('utf-8');
print_r($_FILES);
?>
-------------------------------------------------


よろしくお願いいたします。

A 回答 (1件)

自信なし。



Bug #55510 $_FILES 'name' missing first character after upload.
https://bugs.php.net/bug.php?id=55510
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ご指摘の通り、バージョン特有のバグでした。
2012/05/12現在最新である5.4.3にバージョンアップしたところ、正常に動作しました。

お礼日時:2012/05/12 11:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!