質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

462閲覧

Windowsの日本語パス上でPHPのビルトインサーバを起動するとphp以外のリソースにアクセスできない

kotatsu_hal

総合スコア34

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2018/10/03 02:18

編集2018/10/03 02:29

日本語が含まれるフォルダの中で、PHPビルトインウェブサーバを活用したいと考えています。
ところが、試したところphpファイル以外のリソースにアクセスできないため、質問いたしました。

まずは問題を再現。

プロジェクト という名のフォルダをデスクトップに作成し、index.phpcat.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ページの方は表示されるのですが、画像の方は表示されず 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ビルトインサーバを活用したいと考えていますので、対応策を思いつく方がいらっしゃいましたらご教授いただければ幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

イメージ説明

D:\テスト>php -S localhost:8123 -t . PHP 7.1.20 Development Server started at Tue Oct 9 12:45:41 201 Listening on http://localhost:8123 Document root is D:\テスト Press Ctrl-C to quit. [Tue Oct 9 12:45:59 2018] ::1:50990 [200]: / [Tue Oct 9 12:45:59 2018] ::1:50991 [200]: /Chrysanthemum.jpg

index.php

<image src="/Chrysanthemum.jpg" height="100" /> <?= phpinfo(INFO_VARIABLES);

ログは化けるが

投稿2018/10/09 03:51

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kotatsu_hal

2018/10/10 13:12

うちはCドライブですが、Cドライブ直下に「テスト」ディレクトリ作ってほぼ同じ状況で再現したのですが `C:\テスト>php -S localhost:8123 -t .` ダメでしたね・・。やはりPHP以外はNotFoundです。 ちょっと違っているのは、DOS画面上のログがうちは化けませんでした。 `Document root is C:\テスト` と出ます。 コードページかなーと思いchcpを932にしてみたり65001に変更したりなんかしましたが、変わりなしです。 また、うちはPHPのバージョンを7.2.5にしてるので、そのへんの違いもあるのかもしれません。(昔は出来てたはずなので)
guest

0

自己解決

php 7.2.5

php 7.2.10
にバージョンアップしたらうまく行くようになりました。(Chocolatey使用)

投稿2018/11/06 05:55

kotatsu_hal

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kotatsu_hal

2018/11/06 07:17

ありがとうございます! そんな引きはイラナイ!????
guest

0

本来、URL に利用できる文字種は英数字といくつかの記号がある程度です。それ以外の文字を入れたい場合は、%xx 方式で文字コードを指定する URL エンコードを行う必要があります。

試しに URL エンコードした状態の URL を与えたらどうなるのでしょうかね。

投稿2018/10/09 04:16

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kotatsu_hal

2018/10/10 13:06

ドキュメントルートが日本語となっているというお話ですのでURLには影響しない部分かと思います。実際、URLで指定しているものは日本語ファイルではありませんので・・。 ご回答ありがとうございました。
guest

0

回答でありませんが、基本的にネット上で使用するアプリケーションでは日本語に対応していないと思ったほうがいいと思います。ましてWindowsは未だにshift-jsですし・・・
とりあえずLinuxでやってみました。

usr~/test/html/プロジェクト % cat index.php

<!DOCTYPE html> <img src="cat.jpeg" width="270" height="293" alt=""> <br clear="all"> <?php phpinfo() ?>

usr~/test/html/プロジェクト % php -S localhost:3000
PHP 7.0.32-0ubuntu0.16.04.1 Development Server started at Tue Oct 9 12:05:02 2018
Listening on http://localhost:3000
Document root is /home/kondo/test/html/プロジェクト
Press Ctrl-C to quit.

イメージ説明

※当然画像のみでも表示できます。
参考:Shift_JIS
「追記」
FAT、HPFS、NTFS ファイル システムについて

投稿2018/10/09 03:38

編集2018/10/09 04:18
cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2018/10/09 04:09 編集

winやmacではフォルダやファイル名に“\ / : * ? " < > |”(5c 2f 3a 2a 3f 22 3c 3e 7c)が含まれているとNGです。・・・他にもあるかも・・・
kotatsu_hal

2018/10/10 13:15

ご回答ありがとうございます。 日本語フォルダで管理する事自体がナンセンスってことなのでしょうかね・・。 さて困りました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問