アプリ版:「スタンプのみでお礼する」機能のリリースについて

Win32上にApache+PHPの組み合わせでインストールされている物とします。
このフォルダ名にスペースや2バイト文字が含まれている事で起こる不都合をいろいろな方面で教えてください。

長くなってもかまいません。

A 回答 (4件)

えと、File名の問題でautoindexモジュールを使う場合、SJIS文字などの2バイトファイル名やディレクトリ名のうち、2バイト目にアルファベット範囲にある文字がある場合、うまくファイル及びディレクトリインデックスが取得できません。



apacheは基本的にsingle byte圏向けの仕組みしか持っていないうえ、Win32用に作られたapacheでは内部関数ap_os_canonical_filename()によりアルファベットをすべて小文字に変換しようとします(UNIX系の場合、この関数は何もしない。WindowsのFileSystemが大文字小文字を同一視する事への対応だと思う)。

そのため「ス」など、SJIS表現で2バイト目にアルファベットを持つ名前で、大文字の場合、「ベ」のように変換されてしまい、正しいリクエストが発行できません。

現状では私はソースをいじって上記関数内のstrlwr()をコメントアウトしてmakeして使ってます(もしかしたら_mbslwr()とかを使えば通るかも。まだ試してないのでどうなるかは不明なんですが)。
別の回避策としてはCygwin環境下でmakeしたapacheを用いるという方法もあります(こっちの方が何かと楽。後々問題少ないし)。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
"ap_os_canonical_filename()" "Cygwin"が今回の回答のキーとなりそうですね。
他OSから移植されたアプリケーションは、信頼性を考えると二の足を踏んでしまう。
(Windows環境で動作するIISでさえ穴だらけ)
Cygwinをインストールし色々試したいと思います。

お礼日時:2002/03/25 14:12

まず、Apache自体は日本語環境に完全対応しているかという問題。


Apache自体がファイル名やディレクトリ名操作でマルチバイト文字を問題なく取り扱えるかという点。機種依存文字や人名用漢字、外字登録されている文字の何が来ても大丈夫な作りになっているかという点を考慮します。

次にPHP。PHPの機能でファイル操作を問題なく行えるかという問題。include, require, fopen等の引数で特殊文字を指定しても正常動作出来るかという点を考慮することになります。

最後にOS。
OSがマルチバイト文字をサポートしていて、かつ、ファイルシステムもマルチバイト文字をサポートしていなければOSとしてファイル名を認識できないことになります。

UNIXでファイル名にマルチバイト文字を使用しないのは運用ポリシーとして「極力安定動作させるため、ちょっとでも不安要素があるようなものは導入しない使用しない。」という考えがあるためではないでしょうか?
fsckを実行したときに消されるのがオチでしょう。

結論としては「影響あるかもしれないし無いかもしれない」という消極的な言い方になります。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。

お礼日時:2002/03/25 13:45

別にあなたの都合はどうでもよくて、「Webサイトなら誰でも見れるべきモノ」なはずです。



一般的に、WebサイトでURLとしてマルチバイト文字を使うのは嫌われます。きつい言い方をすれば「ご法度(使用禁止)」の域です。

つまり、閲覧しに来た人はいろんな種類のブラウザやOSを使っています。また、使っているOSに関してもUNIXやPDA等を使っているかもしれません。これらの人を無視すればあまり大きな問題はないでしょう。

まぁ、あるとすれば「\」の取り扱いくらいでしょう。
特定のファイル/ディレクトリにアクセスできなかったり、するくらいでしょう。

この回答への補足

言葉足らずで勘違いさせてしまいました。

今回の質問では、windows環境で、WEBサーバー構築する際のインストール先などのフォルダ名のことを指しております。”URL”ではありません。

UNIX環境では、フォルダ名に2バイト文字・スペースは許されませんよね。
apache設定ファイル(httpd.conf等)に記述し、Webサーバー動作に影響を及ぼすことはあるのかといった質問内容であります。
インストール先を変更ができるのは当然知っています。ただUNIX環境を触れたことがあるものにとっては、2バイト文字やスペースが含まれるフォルダ名には気持ちがいいものではありません。



今回の質問の回答が”影響はない”のであればそれはそれでかまいません。

”長くなっても・・”と書いたのは、詳しく知りたかったことと、この手の問題は回答文が長くなると感じ、回答者への配慮のつもりです。

補足日時:2002/03/20 18:27
    • good
    • 0

 あんね。


>長くなってもかまいません。
 は、貴方の都合ですよね。書く方の都合ではありません。
 って事で、以下の事を質問します。
Apacheのバージョンは?
PHPのバージョンは?
PHPの動作モードは?
Win32って何?

 スペースが含まれる事による弊害、別になし。エンコードされる時の問題があるけど、それは設定で逃げられるので、問題だとは言えない。
 2バイト文字は、不都合として捉えるには大きすぎるので、ApacheのサイトやPHPのサイトを、よく読めばのっています。長くとも良いのなら、まずはサポートしているサイトをよく読む事をお薦めします。

この回答への補足

インストール先をC:\apache等2バイト文字・スペースを使用しないフォルダ名にすれば済むことですが、デフォルトでは、C:\\Program files\・・・にインストールされるようになってますよね。

設定ファイルに2バイト文字・スペースを使用したパス名を記述した場合の動作への影響をお聞きしたく、
別にないのであればそれでよいのです。

過去にJavaのクラスパスの設定で上記のようなパス名を記述し、不具合があったもので。

win32としたのは失敗でしたね。
95以降とNT以降の環境で動作するアプリケーション(この場合はWEBサーバー)の意味で書いたのですが、うまく伝わらなかったようです。

補足日時:2002/03/20 19:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!