OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

Apache又はPHPのフォルダ名

  • 暇なときにでも
  • 質問No.236892
  • 閲覧数342
  • ありがとう数4
  • 気になる数0
  • 回答数4
  • コメント数0

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

長くなってもかまいません。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル11

ベストアンサー率 58% (114/195)

えと、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を用いるという方法もあります(こっちの方が何かと楽。後々問題少ないし)。
お礼コメント
noname#1505

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

その他の回答 (全3件)

  • 回答No.1
レベル13

ベストアンサー率 33% (427/1283)

 あんね。 >長くなってもかまいません。  は、貴方の都合ですよね。書く方の都合ではありません。  って事で、以下の事を質問します。 Apacheのバージョンは? PHPのバージョンは? PHPの動作モードは? Win32って何?  スペースが含まれる事による弊害、別になし。エンコードされる時の問題があるけど、それは設定で逃げられるので、問題だとは言えない。  2バイト文字は、 ...続きを読む
 あんね。
>長くなってもかまいません。
 は、貴方の都合ですよね。書く方の都合ではありません。
 って事で、以下の事を質問します。
Apacheのバージョンは?
PHPのバージョンは?
PHPの動作モードは?
Win32って何?

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

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

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

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

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


  • 回答No.2
レベル12

ベストアンサー率 41% (324/772)

別にあなたの都合はどうでもよくて、「Webサイトなら誰でも見れるべきモノ」なはずです。 一般的に、WebサイトでURLとしてマルチバイト文字を使うのは嫌われます。きつい言い方をすれば「ご法度(使用禁止)」の域です。 つまり、閲覧しに来た人はいろんな種類のブラウザやOSを使っています。また、使っているOSに関してもUNIXやPDA等を使っているかもしれません。これらの人を無視すればあまり大きな問 ...続きを読む
別にあなたの都合はどうでもよくて、「Webサイトなら誰でも見れるべきモノ」なはずです。

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

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

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

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

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

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



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

”長くなっても・・”と書いたのは、詳しく知りたかったことと、この手の問題は回答文が長くなると感じ、回答者への配慮のつもりです。
投稿日時 - 2002-03-20 18:27:32
  • 回答No.3
レベル12

ベストアンサー率 41% (324/772)

まず、Apache自体は日本語環境に完全対応しているかという問題。 Apache自体がファイル名やディレクトリ名操作でマルチバイト文字を問題なく取り扱えるかという点。機種依存文字や人名用漢字、外字登録されている文字の何が来ても大丈夫な作りになっているかという点を考慮します。 次にPHP。PHPの機能でファイル操作を問題なく行えるかという問題。include, require, fopen等の引数で ...続きを読む
まず、Apache自体は日本語環境に完全対応しているかという問題。
Apache自体がファイル名やディレクトリ名操作でマルチバイト文字を問題なく取り扱えるかという点。機種依存文字や人名用漢字、外字登録されている文字の何が来ても大丈夫な作りになっているかという点を考慮します。

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

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

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

結論としては「影響あるかもしれないし無いかもしれない」という消極的な言い方になります。
お礼コメント
noname#1505

お礼が遅くなり申し訳ありません。
投稿日時 - 2002-03-25 13:45:24
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ