Pocket

XAMPP for Windows

Apacheの設定もPHPの設定も間違ってなさそうなのに、なんで?って思ったら、ローカルの開発環境だと、普通にやってしまいそうな、日本語フォルダが原因かもしれません。基本的に、日本語フォルダは使えません。親とかその親とかに日本語フォルダがあってもダメです。

直接的な回避策はありませんが、とりあえず、そのままのフォルダ構造で何とかしてみる方法を紹介します。

Windows版XAMPP version 1.7.7(Apache 2.2.21/PHP 5.3.8)で確認してます。未確認ですが、多分、Linuxでも同じかと思います。

Apacheが起動しない

Apacheが起動しない場合、最初に疑うのは、ポートです。そこをクリアしてもダメな時、意外と気づかないのは、DocumentRootのパスです。日本語を含むフォルダ名が含まれてると、Apacheが起動しません。例えば、httpd.conf(バーチャルホストの場合は、\extra\httpd-vhosts.conf も)に、

DocumentRoot “D:\Business2\Project\価格比較\競泳水着.com\@www\public_html”

という指定では、ダメでした。

最後まで全て英語のフォルダ名で構成されたパスにする必要があります。

どうしても使いたい場合は、ちょっとした回避方法として、シンボリックリンクを使う方法があります。Link Shell Extension とかのツールをインストールして、日本語を含むフォルダ名へのリンクを、すべて英語名のフォルダへのリンクに置き換えてしまいます。

シンボリックリンクをすべて英語のフォルダ名の下へ作成して、リンク先を元のフォルダ(日本語を含んでもOK)へ設定します。DocumentRootを変更して、再起動すれば、動きます。

PHPがUnknown on line 0で止まる

ファイルが絶対あるのに、on line 0 でファイルが開けませんというエラーで止まってしまう場合は、確実に日本語ファイル名の問題です。正確には以下の様なエラーが出ます。

Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

Fatal error: Unknown: Failed opening required ‘D:/Business2/Application/XAMPP/htdocs/kyoueimizugi/public_html/テスト.php’ (include_path=’.;D:\Business2\Application\XAMPP\php\PEAR’) in Unknown on line 0

日本語のファイル名の「テスト.php」は残念ながら、開くことはできません。

さらに、Apacheの日本語フォルダ問題で回避したシンボリックリンクですが、実は、PHPには効きません。Apacheは動いてるんですが、PHPで同じエラーがでます。index.phpを開いてるのに、ファイルが無いと言われます。

回避方法 1 やっぱり日本語は使わない

昔からの鉄則ですが、プログラムやウェブサーバーに使うファイル名・フォルダ名は英語だけにしときましょう。空白も使わない方が無難です。最も良い方法だと思います。

回避方法 2 NetBeansの機能を使う

プログラムの開発にNetBeansを使っているなら、プロジェクトの設定に「ファイルをソースフォルダから別の場所にコピー(C)」という項目があります。ので、これで、英語だけで構成されたフォルダ以下へコピーしてしまいます。

この機能は、この問題を回避するためにあるんじゃないか?と思えるような機能です。

回避方法 3 WebMatrixを使う

XAMPPを諦めて、Microsoft WebMatrixを使う。未確認ですが、たしか、日本語フォルダ名があってもちゃんと使えてたような気がします。

おまけ

WinSCPにも似たような問題があって、「ソ」とかを含むフォルダ名は開けません。これは、シンボリックリンクで回避できますので、Apacheを騙したようにやれば、日本語フォルダ名でもちゃんと使えます。

お知り合いに、紹介してもらえませんか?

いつも、読んでいただきありがとうございます。もしこの内容に価値があると思われたら、お知り合いにも紹介してもらえると、とても嬉しいです!

Pocket