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

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

ただいまの
回答率

89.54%

laravelで拡張子が.phpのjavascriptを実行したい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,032

taro_nii_chan

score 195

 やりたい事

laravelアプリケーションでjavascriptを使いたいのですが、
拡張子を.phpにしたいのです。

 現状

 MAMPでの動作確認

/Applications/MAMP/htdocs/ディレクトリに以下のファイルを配置します。

$ tree php2js
php2js
├── index.html
└── js
    └── hoge.php


ここでindex.html

<!DOCTYPE html>
<html>
<head>
    <title>php2js</title>
    <script src="js/hoge.php"></script>
</head>
<body>
<h1>php2js</h1>
</body>
</html>


hoge.php

alert("hogehoge");


としてあります。

この状態でブラウザでhttp://localhost/php2js/を叩くと
hogehoge
と想定通りアラートが表示されます。

 laravelでの動作確認

laravel new php2js
php2jsアプリケーションを作り、
hoge.phpwelcome.blade.phpを以下のディレクトリに配置します。

php2js
├── public
│   └── js
│       └── hoge.php
└── resources
    └── views
        └── welcome.blade.php


hoge.phpはMAMPでの同名のファイルと同じ内容、
welcome.blade.phpはMAMPでのindex.htmlと同じ内容にしてあります。

この状態で
http://php2js.dev/
にアクセスしてもアラートは出ません。
<h1></h1>タグで指定した
php2js
と言う文字列だけが表示されます。

http://php2js.dev/js/hoge.php
にアクセスすると、

Sorry, the page you are looking for could not be found.
(1/1) NotFoundHttpException
in RouteCollection.php (line 179)


とエラーが表示されます。

 質問

laravelでもhoge.phpが実行されるためにはどうしたら良いですか?

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • coba-coba

    2017/07/12 11:55

    <script src="{{asset('js/hoge.php')}}"></script>だとどうですか?

    キャンセル

  • taro_nii_chan

    2017/07/12 12:03

    <script src="http://php2js.dev/js/hoge.php"></script>に展開され、http://php2js.dev/js/hoge.phpを見ようとすると「Sorry, the page you are looking for could not be found.」とエラー表示されます。

    キャンセル

  • taro_nii_chan

    2017/07/12 12:09

    あれ、srcの中が書き換わってますね。srcの中も、http://php2js.dev/js/hoge.php です。

    キャンセル

回答 2

+1

DocumentRootphp2js/publicに設定され、.htaccessが適切に設置されているなら、
hoge.phpは直接実行されるはずです。

でも結果をみると、そのURLをLaravelが取ってしまっているように見えます。
設定を見直してみてはいかがでしょうか。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/07/12 18:54

    標準添付の htaccess で動くはずですが・・・。
    ちなみに、http://php2js.dev/ にアクセスしたときに、・・・/php2js/public/ を読み込ませる設定(http.confなど)はどうなっていますか?

    キャンセル

  • 2017/07/12 20:00

    普段 MAMP で使ってるウェブサーバは apache2 だと思っていて、だとすると設定ファイルは http.conf になると思うのですが、ひょっとして Laravel で使ってるのは nginx なんじゃないかと思い始めまして、試しに welcome.blade.php の中身を <?php phpinfo(); ?> に書き換えてみたところ、
    $_SERVER['SERVER_SOFTWARE'] nginx/1.12.0
    という1行がありました。
    nginx に関する知識はほぼ皆無なのでこれから勉強していこうと思ってますが、この1行で nginx だと判断して間違いなさそうですか?

    (あとで気づいて確認したのですが、MAMP でも同じことをしてみたら、
    $_SERVER['SERVER_SOFTWARE'] Apache/2.2.31 (Unix) mod_wsgi/3.5 Python/2.7.13 PHP/7.1.1 mod_ssl/2.2.31 OpenSSL/1.0.2j DAV/2 mod_fastcgi/2.4.6 mod_perl/2.0.9 Perl/v5.24.0
    となっていました)

    キャンセル

  • 2017/07/12 20:26

    ああ、端からMAMPは関係なかったんですね・・・。
    そちらの環境は知る由もありませんが、nginx とあるので nginx なんでしょう。。。公式ドキュメントを参考に nginx の設定を行って下さい・・・。

    キャンセル

check解決した方法

0

https://teratail.com/questions/84183
にて解決しましたのでご報告します。

回答&コメント頂いた方々、ありがとうございました。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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