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

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

ただいまの
回答率

90.00%

エラーがないので分かりにくいです..........

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 788

CharleyBowles

score -1

前提・実現したいこと

PHPを実行するがfile:で始まっていたらjavascriptでhttp://localhost/にリダイレクトする
プログラムを作りたいです。(file:上でPHPが実行できないため)
探しているのはnoscriptのようなことをPHPでもするプログラムです。

ファイル数のよく変わるフォルダの画像を表示するプログラムに組み込みます。
画像は1.jpgからの連番で保存されており、
1.jpgから順に表示するプログラムを作っています。

発生している問題・エラーメッセージ

エラーメッセージはありませんが、ファイルを開くと内容がすべてそのまま表示されます。
勝手に<pre></pre>が追加されています。


実行成功範囲

ブラウザ HTML PHP javascript
edge ×
IE × × ×
Firefox × × ×
Chrome × × ×

該当のソースコード

<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>漫画閲覧プログラム</title>
</head>
<body>
<script type="text/javascript">
 if(window.location.protocol == "file:"){
  url=window.location.href;
  location.href=url.replace( "file:///C:/xampp/htdocs/" , "http://localhost/" ) ;
 }
</script>
<p>
<?php
  header('Content-Type: text/html; charset=UTF-8');
  $num = 1;
  while(file_exists($num . ".jpg")){
    echo "<img src=" . $num . ".jpg>";
    ++$num;
  }
?>
</p>
</body>
</html>


内容としてはfile:///C:/xampp/htdocs/で始まるURLの場合、
自動的にhttp://localhost/に書き換え再読み込みする
その後、PHPを実行したいです。
また、PHP単体で動かしたところ正常に動きました。

試したこと

html javascript php 同時記述についてのページを探す

補足情報(言語/FW/ツール等のバージョンなど)

XAMPP3.2.2

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • gouf

    2017/05/31 04:02

    これを解決することで実現する「本当にやりたかったこと」はなんでしょうか

    キャンセル

回答 4

checkベストアンサー

+2

PHPが含まれていることから、ファイルの拡張子は.phpのはずですね?

だとすると、ブラウザにドロップしたりして開く場合、.phpはただのテキストファイルとして認識されてしまいますので、Javascriptが動くことはありません。
(わたしの環境ですと、Chromeはhtmlしてジャンプしました)

逆に、XAMPP上で.htmlをPHPとして認識して実行するように設定し、問題のファイルの拡張子をhtmlに変えれば、どのブラウザでも動作するように思います。
.htmlでPHPを動かす設定は、ググってみてください。

何のためにそんなことをしたいのか理解に苦しみますが・・・

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/31 22:03

    .htmlでPHPを動かす設定を調べてやってみましたが、
    PHPは実行できなかったので他の方法を探しています。

    キャンセル

+1

エラーが出ないのであればXAMMPでApacheをスタートさせていなくて、アクセスするURLを間違えているのではないかと思います。
headerをその位置でコールするとエラーになります。

header:PHPマニュアル
該当場所抜粋:

覚えておいて頂きたいのは、header() 関数は、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の 出力の前にコールする必要があることです。 頻出するエラーとして、include または require 関数、他のファイルをアクセスする関数に 空白または空行があり、header() の前に出力が 行われてしまうというものがあります。同じ問題は、単一の PHP/HTML ファイルを使用している場合でも存在します。 

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/31 20:01 編集

    XAMMPのApacheは動いてます。
    URLも間違っていません。
    header()を削除すればいいのでしょうか?

    キャンセル

  • 2017/05/31 20:11

    header()に書いてある中身は理解されてますか?
    何をしているかわかっているから書いていると思ったのですが・・・
    理解したうえで回答に添付した内容を読んでそれでも削除するというのであればそれはそれで良いのですが、
    今回発生している問題解決の手段ではないです。
    あくまでPHPが正しくPHPとして実行されているならheader()が現在の箇所に書かれていることでエラーが表示されるはず、という意味です。
    エラーが何もないならPHPがPHPとして正しく実行されていないということです。

    キャンセル

+1

内容としてはfile:///C:/xampp/htdocs/で始まるURLの場合、
自動的にhttp://localhost/に書き換え再読み込みする 

それを出来るのはブラウザのみです。
プラグイン(ブラウザ拡張)から類似のものを探されるか、プラグイン自体を開発されるしか方法はありません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/31 20:23

    location.hrefでページを移動できるという記事をQiitaなどで見たのですが......

    キャンセル

  • 2017/05/31 20:44

    shi_ueさんが書かれているように、ブラウザにドロップしたりして開く場合、.phpはただのテキストファイルとして認識されてしまいますので、JavaScriptは動かないと考えたほうが良いです。

    そもそもダブルクリックやファイルをドロップせず、ブックマークにでも入れておけば良いだけでは?

    キャンセル

-4

ダメもとで拡張子をphpからhtmlに変えましたが動きませんでした。
その後さらにファイル名.php.htmlにしてみたんです。
そしたら、動きました。

ピリオド以降 結果 判断
php.html 両方ともなぜか実行できた
php javascriptが実行できない ×
html phpが実行できない ×
  • 追加したコード(httpd.conf)
    AddType application/x-httpd-php .html#追加
    AddHandler application/x-httpd-php .php .html#追加
  • 追加したコード(php.ini)
    [CODE]
    AddType application/x-httpd-php .php .html
    [/CODE]
  • 編集したコード(httpd-xampp.conf)
    <IfModule mime_module>
    AddType text/html .php .phps
    AddType application/x-httpd-php .html#追加
    AddHandler application/x-httpd-php .php .html#追加
    </IfModule>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/31 22:49

    まったく意味がわかりません。その解決で満足なんですか?なぁなぁのままやると、困るのは自分自身です。まず単純なphpが動く環境を作りましょう。
    https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q138278528

    キャンセル

  • 2017/05/31 23:13 編集

    私はパソコンじゃないので分かりませんが、
    a.php.html のようなファイルにしたら開けました。
    もちろん、満足ではありません

    キャンセル

  • 2017/06/01 11:30

    「なぜか実行できた」の「なぜ」を解決しないことには「解決」にしてはいけませんよ。
    満足でないならなおさら解決にはできません。

    それにこの方法は本来到達するべき場所から逸脱しています。
    マラソンにおいてゴールまで走りきれないからその辺の横道に置いてゴールしたことにしただけです。
    それはではいつまでたってもゴールまできちんと走りきるための体力も技術もつきません。

    従来どおり、PHPが正常に動作する環境を作ればJavaScriptも動作しますし「file:///があるかないか」なんて気にする必要はないです。
    goufさんが書いていることが本質だと思いますよ。

    同様の問題をかかえた人がこの質問と解決方法を見て「これで解決できますよ」と胸を張って言えますか?「ベストアンサー」の意味をもっと考えてください。

    キャンセル

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

  • ただいまの回答率 90.00%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる