• ベストアンサー

Apache又はPHPのフォルダ名

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

noname#1505
noname#1505
  • PHP
  • 回答数4
  • ありがとう数4

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

  • ベストアンサー
  • alfeim
  • ベストアンサー率58% (114/195)
回答No.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を用いるという方法もあります(こっちの方が何かと楽。後々問題少ないし)。

noname#1505
質問者

お礼

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

その他の回答 (3)

  • selenity
  • ベストアンサー率41% (324/772)
回答No.3

まず、Apache自体は日本語環境に完全対応しているかという問題。 Apache自体がファイル名やディレクトリ名操作でマルチバイト文字を問題なく取り扱えるかという点。機種依存文字や人名用漢字、外字登録されている文字の何が来ても大丈夫な作りになっているかという点を考慮します。 次にPHP。PHPの機能でファイル操作を問題なく行えるかという問題。include, require, fopen等の引数で特殊文字を指定しても正常動作出来るかという点を考慮することになります。 最後にOS。 OSがマルチバイト文字をサポートしていて、かつ、ファイルシステムもマルチバイト文字をサポートしていなければOSとしてファイル名を認識できないことになります。 UNIXでファイル名にマルチバイト文字を使用しないのは運用ポリシーとして「極力安定動作させるため、ちょっとでも不安要素があるようなものは導入しない使用しない。」という考えがあるためではないでしょうか? fsckを実行したときに消されるのがオチでしょう。 結論としては「影響あるかもしれないし無いかもしれない」という消極的な言い方になります。

noname#1505
質問者

お礼

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

  • selenity
  • ベストアンサー率41% (324/772)
回答No.2

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

noname#1505
質問者

補足

言葉足らずで勘違いさせてしまいました。 今回の質問では、windows環境で、WEBサーバー構築する際のインストール先などのフォルダ名のことを指しております。”URL”ではありません。 UNIX環境では、フォルダ名に2バイト文字・スペースは許されませんよね。 apache設定ファイル(httpd.conf等)に記述し、Webサーバー動作に影響を及ぼすことはあるのかといった質問内容であります。 インストール先を変更ができるのは当然知っています。ただUNIX環境を触れたことがあるものにとっては、2バイト文字やスペースが含まれるフォルダ名には気持ちがいいものではありません。 今回の質問の回答が”影響はない”のであればそれはそれでかまいません。 ”長くなっても・・”と書いたのは、詳しく知りたかったことと、この手の問題は回答文が長くなると感じ、回答者への配慮のつもりです。

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

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

noname#1505
質問者

補足

インストール先をC:\apache等2バイト文字・スペースを使用しないフォルダ名にすれば済むことですが、デフォルトでは、C:\\Program files\・・・にインストールされるようになってますよね。 設定ファイルに2バイト文字・スペースを使用したパス名を記述した場合の動作への影響をお聞きしたく、 別にないのであればそれでよいのです。 過去にJavaのクラスパスの設定で上記のようなパス名を記述し、不具合があったもので。 win32としたのは失敗でしたね。 95以降とNT以降の環境で動作するアプリケーション(この場合はWEBサーバー)の意味で書いたのですが、うまく伝わらなかったようです。

関連するQ&A

  • Apache 2.4.0でphp5.3を使うには?

    Apacheをインストールし、ApacheからPHPを使える状態にしたいです。 Apacheのインストールは、 http://www.apachelounge.com/download/から Apache 2.4.0 httpd-2.4.0-win32.zip をダウンロードし、c:/pg/にApache24という名前のフォルダで配置しました。 ドキュメントルートのhtmlファイルをブラウザで表示できるところまでできています。 PHPのインストールは http://windows.php.net/download/から PHP 5.3 (5.3.9) Zip [14.94MB] sha1: 4149d79a877ae7ccb0e5419b13152b5bd3074825 php-5.3.9-nts-Win32-VC9-x86.zipをダウンロードし デスクトップにphpというフォルダを作成し、その中に全て展開しました。 展開されたphpフォルダをc:/pg/Apache24に配置しました。c:/pg/Apache24/php PHP利用のための設定 モジュールの追加 http://www.adminweb.jp/apache/php/index1.html を参考にするとApacheでphpを利用するためには、 Apache2.2系を使う場合は、"httpd.conf"ファイルの中の "Dynamic Shared Object (DSO) Support"ブロックの一番最後に 次の行を追加すればよいという説明があります。 LoadModule php5_module c:/php/php5apache2_2.dll Apache2.4系を使う場合はどのようにしたら良いのでしょうか。 展開したphpフォルダの中にphp5apacheで始まるdllファイルが存在しません。 php5apacheで始まるdllファイルを自分で用意して配置しないといけないのでしょうか。

  • Apache 2.4でphp-5.3を使いたいです

    Apache 2.4.0でphp-5.3.9を使いたいです。 Apacheのインストールは、 http://www.apachelounge.com/download/から Apache 2.4.0 httpd-2.4.0-win32.zip をダウンロードし、c:/pg/にApache24という名前のフォルダで配置しました。 ドキュメントルートのhtmlファイルをブラウザで表示できるところまでできています。 そして、c:/pg/Apache24に空のフォルダc:/pg/Apache24/phpを作成します。 PHP 5.3 (5.3.9)用のモジュールは上記のページから php5apache2_4.dll-php-5.3.9-win32.zip をダウンロードしてc:/pg/Apache24/phpに php5apache2_4.dllを配置しました。 PHPのインストールは http://windows.php.net/download/から PHP 5.3 (5.3.9) Zip [14.94MB] sha1: 4149d79a877ae7ccb0e5419b13152b5bd3074825 php-5.3.9-nts-Win32-VC9-x86.zipをダウンロードし c:/pg/Apache24/phpに全て展開しました。 c:/pg/Apache24/phpには 「php5apache2_4.dll」と「展開したphp-5.3.9-nts-Win32-VC9-x86.zip」が入っています。 そして、 C:/pg/Apache24/conf/http.confの167行目に LoadModule php5_module c:/pg/Apache24/php/php5apache2_4.dllを追加しました。 ----------------------------------------------------------- #LoadModule version_module modules/mod_version.so #LoadModule vhost_alias_module modules/mod_vhost_alias.so #LoadModule xml2enc_module modules/mod_xml2enc.so LoadModule php5_module c:/pg/Apache24/php/php5apache2_4.dll ----------------------------------------------------------- ダウンロードと一緒についてくるPHPのマニュアルを見ると、 # Runs with PHP 5.3.9, Apache 2.4 and Win 32 # Install: - Copy php5apache2_4.dll to your php folder (eg. c:/php) (和訳:php5apache2_4.dllをあなたのphpフォルダーへコピーして下さい) ⇒完了済み # Add to your httpd.conf (和訳:あなたのhttpd.confに追加して下さい) LoadModule php5_module "c:/php/php5apache2_4.dll" AddHandler application/x-httpd-php .php ⇒1つ目は完了済み、2つ目はまだ # configure the path to php.ini (和訳:php.iniへのパスを形成して下さい。) PHPIniDir "C:/php" ⇒まだ この状態でコマンドプロンプトから C:\pg\Apache24\bin\httpd を入力すると下記のエラーが出てしまいます。 C:\pg\Apache24\bin\httpd (←Apacheの起動) httpd: Syntax error on line 167 of C:/pg/Apache24/conf/http.conf : Cannot load C:/pg/Apache24/php/php5apache2_2.dll into server: \x8ew\x92\x82\xb3\x82~~~~ C: (←Apacheが終了) なぜエラーになってしまうのでしょうか。

  • ApacheのPHPが動かない

    apache_2.2.10-win32-x86-openssl-0.9.8i.msiをインストールしたあと、 php-5.2.6-win32-installer.msiをインストールしました。 httpd.confなどプロパティの設定はすべてウィザードに従い、 自動で行いました。phpファイルにアクセスするとソースが そのまま表示されることはないのですが真っ白で何も表示されません。 apacheの再起動はしました。 ほかに何か必要な作業があるでしょうか?

    • 締切済み
    • PHP
  • Apache2.0.63でphp4.4.4(起動できない!)

    現行のシステムと同じ環境を作るためphp4.4.4を入れようとしています。 公式のサイトからphp-4.4.4-installer.exeをダウンロードして、インストールしました。そしてphp4apache2.dllもphp4apache2.dll-php4,4,x,zipのものに変更しました。 その後apacheのhttpd.confを変更して起動したのですが、 「The requested opration has failed!」となり起動できません。 error.logには ---------------------------------------------------------------- Syntax error on line 173 of C:/Program Files/Apache Group/Apache2/conf/httpd.conf: Cannot load C:/PHP/php4apache2.dll into server:[文字と数字と\の羅列] ---------------------------------------------------------------- と出ています。 php.iniの設定など見直してみましたが特におかしな点は見当たりませんでした。 気になっているのがphpをインストーラで入れた所、ファイル構成がinstall.txtの記述と違っている点です。 以下のフォルダやファイルしかなく、あるはずのsapiフォルダなどがありません。 ---------------------------------------------------------------- ・BACKUPフォルダ ・sessiondataフォルダ ・uploadtempフォルダ ・IISConfig.exe ・install.txt ・License ・php4ts.dll ---------------------------------------------------------------- 今気づいたのですが、サーバーをApacheに設定しているのにIISとあるものがあるのも変な気がします。 どうすればphpを使えるようになるか、ご教示お願いします。 情報不足でしたら補足いたします。 本題とはずれますが、error.logは毎回出力されないのでしょうか? 何回か設定を変えては起動、を繰り返したのですが、その分のエラーは追加されていないようです。

    • ベストアンサー
    • PHP
  • ApacheとPHPの連携

    はじめまして。 今サーバーを立てようと思ってApacheとPHPを設定しているところです。 apache_2.0.59-win32-x86-no_ssl.msi php-4.3.11-Win32 を使ってインストールをしているのですが サイトに載っているとおり 設定をしていろいろやっているのですが apacheをリスタートした後 最終的にtest.phpをwindowsのapache配下のhtdocsに格納 内容 <?php phpinfo(); ?> http://localhost/test.php そうするとメモ帳でtest.phpが開いてしまいます。 何が原因かわかる方教えていただけないでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • phpにapacheを組み込む方法

    php初心者です。 「はじめてのphpプログラミング」という本を買ってapacheをphpに組み込もうとしているのですがわからないところがあったのでここで質問させてください。 まずapache2.2.9-win32-x86-nosslr2.mslをインストールし、 ちゃんとhttp://localhost/にIt works!と出たのですが このあと C:\Program Files\Apache Group\Apache2\conf\httpd.confをテキストエディタで開き、 AddType application/x-httpd-php .php LoadModule php5_module "c:/php5/php5apache2_2.dll PHPIniDir "c:/php5/ Alias /hajimete_php5/ "C:/hajimete_php5/" <Directory "C:/hajimete_php5"> Options Indexes FollowSymLinks AllowOverride Options Order allow,deny Allow from all DirectoryIndex index.php index.html </Directory> <Directory "C:/hajimete_php5/SQLiteManager"> php_value error_reporting 6143 </Directory> というのを追記し保存しなさいとあるのですが、 まずProgram FilesにApache Groupというフォルダがありません。 Apache Software Foundationというフォルダはあるのですが・・・・ そこの中のconfのhttpd.confを変えればいいのかなと思って 変えて上書き保存してみようとしても 「ファイルC¥:~httpd.confを作成できません。 パスおよびファイル名が正しいかどうか確認してください。」 とでてしまいます。 どうしたらいいのでしょうか? わかる方いましたらアドバイスお願いたします。 これがだめならphpが使えるレンタルサーバーを借りてそこでやろうかなと考えています。

    • ベストアンサー
    • PHP
  • PHP4.0.6をインストールして使いたいのですが・・・

    借りているサーバーがPHP4.0.6のため、PHP4.0.6とApacheをインストールしてローカルテストを行おうと考えています。 まず、Apache2とPHP4.0.6をダウンロードして、それぞれインストールしたのですが、php4apache2.dllがPHP4.0.6に入ってなかったため、Apache1.3.35をダウンロードし、インストールしなおしました。 すると今度は、php_mbstring.dllがないらしく、マルチバイト文字列関係の関数が使えません。 そこで素人処方でPHP4.4.2をダウンロードし、その中に入っているphp_mbstring.dllをextensionsフォルダにいれたもののdllから「php_mbstring.dllがみつかりません」のような趣旨のメッセージが出て使えません。 いろいろやってみたのですが、正直八方塞の状態です。 ローカルテストで、PHP4.0.6でマルチバイト文字列関係の関数をつかうことはできないでしょうか?(サーバー上ではつかえるのですが・・・)

    • ベストアンサー
    • PHP
  • apacheサーバでphpが表示できない

    php初心者です。 apacheサーバでphpファイルを表示させたいのですが、うまくいかず困っています。OSはwindowsXPです。 phpのインストールはうまく言っているみたいでdosで C:\php>php foo.php Hello となりります。apacheサーバ(Apache/2.2.4 (Win32))自体は動いていて、 http://www.php.net/downloads.php から PHP 5.2.1 installer [19,568Kb] - 12 Feb 2007 をダウンロードする際に、自動的に設定を行いました。"httpd.conf"と"mime.types"ファイルが書き換えられているようです。 phpのフォルダにPathを設定して、サーバの再起動もしているのですが、index.phpを開くとphpファイルのダウンロードになってしまいます。"php.ini", "php5ts.dll"は書き換えず、別のフォルダにも動かしていません。 アドバイスをいただけないでしょうか。お願いします。

    • 締切済み
    • PHP
  • PHPのApacheに関しての質問です。

    PHPを始めたのですが、Windows7の64ビットのPCでApacheがうまく動きません。インストールしたのは、Apache2.2.14のapache_2.2.14-win32-x86-no_ssl.msiです。動かない原因は、32ビット用だからだと思います。そこで、下記のサイトで64ビットのPCでも動くApacheがあったので、ダウンロードしたいと思うのですが、どれをダウンロードすればいいのかわかりませんので教えてください。 http://www.blackdot.be/?inc=apache/binaries

    • ベストアンサー
    • PHP
  • Apache+PHPで動かない・・・

    phpを初めて約三ヶ月、開発環境の整備はXAMPPに丸投げにしていたのですが、「勉強の為にもApacheなどを手入れして行ったほうが良い」 と言われ、挑戦してみた者です。 環境は、WindowsXPです。 どうやらApacheの設定から言って、おかしいようなのです。 C:/apache/にインストールしたのですが、 コントロールパネル→管理ツール→サービスで確認してみると、C:/bin/httpd.exe で実行されるのです。 C:/apache/bin/httpd.exeで実行されないとおかしい気もするのですが・・・ それで、C:/にapacheの同梱フォルダを全てコピーし、設置したところ、動きました。 しかし、「サービス」はC:/bin/httpd.exeで実行されているのに、htdocsなどはC:/apache/で実行されているらしいのです。 Apacheの設定自体がわかりません。従ってPHPの設定もできません。 ApacheとPHPの導入に関しては、http://buzzword.jp/index.html とマニュアルを参考にしました。 やはり初心者はXAMPPで一括導入しておけよと言うことなのでしょうか・・・ 散乱文ですが、回答のほどよろしくお願いします。

専門家に質問してみよう