2009年7月11日

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

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 mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2009年7月11日 19:41
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/86601
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。