[PHP-users 7044] Re: 5Cを含むデレクトリへのアクセス

木村将行 php-users@php.gr.jp
Mon, 22 Apr 2002 15:21:38 +0900


ありがとうございます。

当方、コンパイル環境が無いので、どうしよう・・
と思っていましたら、http://www.geocities.jp/rui_hirokawa/php/
に修正版がありました。
対応、ありがとうございます。

早速、インストールして mbstring.internal_encoding = SJIS
に設定したところ、is_dir()は問題なく動作したのですが、opendir()
がうまく動作していないようです。
表示 OK
表  NG
パスの最後に5Cがあるとうまく動作しないみたいです。
これもis_dir()と同じ原因なのでしょうか?


>廣川です。
>
>is_dir()の動作について調べたところ、
>TSRMのコードでパス区切りを切り出す際に漢字の2バイト目の\
>をパス区切りを混同してしまい、うまくSJISで書かれたパスを
>切り出せていないようでした。
>
>TSRMに以下のようなパッチをあて、_MBCSを定義してコンパイルすることにより、
>2バイト目に \ があってもis_dir()が正常に動作するようになりました。
>
>
>*** TSRM/tsrm_virtual_cwd.c.orig        Mon Apr 22 00:18:10 2002
>--- TSRM/tsrm_virtual_cwd.c     Mon Apr 22 00:18:39 2002
>***************
>*** 68,74 ****
>  #endif
>  
>  #ifdef TSRM_WIN32
>! #define tsrm_strtok_r(a,b,c) strtok((a),(b))
>  #define TOKENIZER_STRING "/\\"
>  
>  static int php_check_dots(const char *element, int n) 
>--- 68,75 ----
>  #endif
>  
>  #ifdef TSRM_WIN32
>! #include <tchar.h>
>! #define tsrm_strtok_r(a,b,c) _tcstok((a),(b))
>  #define TOKENIZER_STRING "/\\"
>  
>  static int php_check_dots(const char *element, int n) 
>
>
>
>
>On Thu, 18 Apr 2002 12:23:46 +0900
>木村将行 <mkim@jp.fujitsu.com> wrote:
>
>> はじめまして、いつもMLにはお世話になっています。
>> 
>> まず環境ですが
>> Windows2000+IIS5+PHP4.1.2
>> です。
>> この環境で、is_dir、file_exists(他にもあるかも)を使用した場合、
>> 5C(\)のコードを含むディレクトリ(表示とか機能などなど)へのアクセス
>> が出来ません。
>> 表\示などいろいろやってみたのですが、どうもうまく行きません。
>> 困り果ててます。(;_;)
>> 皆様のお知恵、宜しくお願いします。
>> -- 
>
>-- 
>-----------------------------------------------------
>Rui Hirokawa <rui_hirokawa@ybb.ne.jp>
>             <hirokawa@php.net>
>
-- 
木村将行 <mkim@jp.fujitsu.com>