[PHP-users 35287] Windows7 でファイルが読み出せない
矢嶋秀樹
mio @ dis.twmu.ac.jp
2010年 7月 12日 (月) 15:55:57 JST
矢嶋と申します。
Winows7 Starter
XAMPP 1.7.3 / PHP5.3.1
で実験した結果です。
scandir() で取り出したファイル名を使っても、
申請.txt 等の 5c を含むファイル名は file_exists() で false となります。
Windows Vista Business SP2
XAMPP 1.6.3a / PHP5.2.3
では正常でした。
他にもバージョンは確認できませんが、 Windows 2000 や XP でも動いていました。
( scandir() を readdir() に代えるなどしています )
★★★ 再現コードは以下の通りです。
htdocs/5C/ に、
index.php
申請.txt
申.txt
請.txt
を置く。
htdocs/5C/index.php は、
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 始め
<?php
echo getcwd() ;
echo "<table border='1' cellspacing='0' cellpadding='3'>\n" ;
$files = scandir('.') ;
foreach( $files as $file ) {
echo " <tr>\n" ;
echo " <td> ", $file, " </td>\n" ;
echo " <td> ", @filesize($file), " </td>\n" ;
echo " <td> ", ( file_exists($file) ? 'O' : 'X' ), " </td>\n" ;
if( ! file_exists($file) ) @touch($file) ;
echo " <td> ", ( file_exists($file) ? 'O' : 'X' ), " </td>\n" ;
echo " <td> ", preg_replace('/../','\0 ',bin2hex($file)), " </td>\n" ;
echo " <td> ", htmlspecialchars(realpath($file)), " </td>\n" ;
echo " </tr>\n" ;
}
echo "</table>\n" ;
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 終わり
その他のファイルは、中身は任意。(目印の為に空でない方が良い)
http://localhost/5C/ でアクセスすると、
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 始め
C:\xampp\htdocs\5C
. 0 O O 2e C:\xampp\htdocs\5C
.. 8192 O O 2e 2e C:\xampp\htdocs
index.php 704 O O 69 6e 64 65 78 2e 70 68 70 C:\xampp\htdocs\5C\index.php
申.txt 558 O O 90 5c 2e 74 78 74 C:\xampp\htdocs\5C\申.txt
申請.txt 558 O O 90 5c 90 bf 2e 74 78 74 C:\xampp\htdocs\5C\申請.txt
請.txt 558 O O 90 bf 2e 74 78 74 C:\xampp\htdocs\5C\請.txt
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 終わり
の様な内容が返される筈ですが、
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 始め
C:\xampp\htdocs\5C
. 0 O O 2e C:\xampp\htdocs\5C
.. 8192 O O 2e 2e C:\xampp\htdocs
index.php 704 O O 69 6e 64 65 78 2e 70 68 70 C:\xampp\htdocs\5C\index.php
申.txt X O 90 5c 2e 74 78 74
申請.txt X O 90 5c 90 bf 2e 74 78 74
請.txt 558 O O 90 bf 2e 74 78 74 C:\xampp\htdocs\5C\請.txt
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 終わり
となってしまいました。
OS の問題の様な気もしますが...
回避策等の情報が見つけられないでいます。
どなたかご存知ありませんか?
PHP-users メーリングリストの案内