[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>&nbsp; ", $file, " &nbsp;</td>\n" ;
	echo "    <td>&nbsp; ", @filesize($file), " &nbsp;</td>\n" ;
	echo "    <td>&nbsp; ", ( file_exists($file) ?  'O' : 'X' ), " &nbsp;</td>\n" ;
	if( ! file_exists($file) )  @touch($file) ;
	echo "    <td>&nbsp; ", ( file_exists($file) ?  'O' : 'X' ), " &nbsp;</td>\n" ;
	echo "    <td>&nbsp; ", preg_replace('/../','\0 ',bin2hex($file)), " &nbsp;</td>\n" ;
	echo "    <td>&nbsp; ", htmlspecialchars(realpath($file)), " &nbsp;</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 メーリングリストの案内