日本語が含まれるフォルダの中で、PHPビルトインウェブサーバを活用したいと考えています。
ところが、試したところphpファイル以外のリソースにアクセスできないため、質問いたしました。
まずは問題を再現。
プロジェクト
という名のフォルダをデスクトップに作成し、index.php
と cat.png
を用意します。
PowerShellからコマンドを叩き、PHPビルトインサーバを起動します。
PowerShell
1PS C:\Users\XXX\Desktop\プロジェクト> php -S localhost:3000 2PHP 7.2.5 Development Server started at Wed Oct 3 10:29:40 2018 3Listening on http://localhost:3000 4Document root is C:\Users\XXX\Desktop\プロジェクト 5Press Ctrl-C to quit.
この状態でブラウザからアクセスします。
- PHPページ:http://localhost:3000/index.php
- 画像リソース:http://localhost:3000/cat.png
すると、PHPページの方は表示されるのですが、画像の方は表示されず Not Found エラーになります。
コマンドライン画面には以下のようなログが表示されています。
[Wed Oct 3 10:29:59 2018] ::1:55487 [200]: /index.php [Wed Oct 3 10:31:02 2018] ::1:55593 [404]: /cat.png - Unknown error
色々試しましたが、画像ファイル以外にも、.css
や .js
ファイルへのアクセスも同様のエラーでした。
php
コマンドの -t
オプションを指定してドキュメントルートを指定してみたりもしたのですが、まったく同じ結果でした。
PowerShell
1PS C:\Users\XXX\Desktop\プロジェクト> php -S localhost:3000 -t C:\Users\XXX\Desktop\プロジェクト 2(結果は上記同様)
フォルダ名を英語にするとうまくいく。
次に、フォルダ名を プロジェクト
→ project
にリネームし、上記同様にビルトインサーバをコマンドから起動しますと、問題なく画像が表示されました。
[Wed Oct 3 10:40:37 2018] ::1:56459 [200]: /index.php [Wed Oct 3 10:40:42 2018] ::1:56460 [200]: /cat.png
シンボリックリンクでもうまくいく。
案件の運用管理上、フォルダ名にどうしても日本語が入ってきてしまうので、シンボリックリンクで対応できないか試してみました。
mklink
コマンドで、日本語フォルダから英字フォルダ名のシンボリックリンクを作成し、その中で実行するとうまくいきました。
mklink /D C:\Users\XXX\Desktop\project C:\Users\XXX\Desktop\プロジェクト
でもシンボリックリンク使いたくない
最悪、シンボリックリンクで対応しようとは思っているのですが、そうなるとプロジェクトの関連フォルダが散らばってしまい、管理が面倒になってしまう恐れがあります。(精神衛生上もよくないです)
できれば日本語フォルダ名のまま、その中でPHPビルトインサーバを活用したいと考えていますので、対応策を思いつく方がいらっしゃいましたらご教授いただければ幸いです。
よろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/10 13:12