[PHP-users 34654] Win上のphp5.3.0でファイル操作できない

pota potapota @ gmail.com
2009年 7月 11日 (土) 19:41:43 JST


potapotaといいます。
公式のWindowsバイナリ(php-5.3.0-Win32-VC6-x86.zip)を
WinXP sp3で、使用しています。

5.2.10までは、ファイル操作関数にShiftJISでのファイル名を
渡せば、意図どおりの動作をしていました。
しかし、5.3.0から使えなくなりました。
ShiftJISエンコードの(いわゆるダメ文字)ファイル名が
通りません。
下記の実行結果にありますように、コンソールへの文字表示は
うまくいっているので、特定の関数の問題だと思われます。

対処法をご存知でしたら教えてください。

(あるいは、Windows下でファイルシステムを扱う時の正統な
作法があるのでしょうか。本当は、setlocaleで、文字コードを
65001(UTF-8)指定できればいいのですが…)

<?php
// カレントディレクリに、"表"という名前のファイルを
// 事前に用意した状態で実行します。
$name ="表";
var_dump(setlocale(LC_ALL,'Japanese_Japan.932'));
// スクリプト自体はUTF-8です。
$name = mb_convert_encoding($name,"cp932","UTF-8");
echo phpversion()." is_file({$name}) --> ";
var_dump(is_file($name));
exit;

/*

--- 実行結果 5.2.10 ----
string(18) "Japanese_Japan.932"
5.2.10 is_file(表) --> bool(true)

--- 実行結果 5.3.0 ----
string(18) "Japanese_Japan.932"
5.3.0 is_file(表) --> bool(false)

*/


PHP-users メーリングリストの案内