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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

2479閲覧

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

taro_nii_chan

総合スコア207

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/07/11 16:45

やりたい事

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

現状

MAMPでの動作確認

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

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

ここでindex.html

html

1<!DOCTYPE html> 2<html> 3<head> 4 <title>php2js</title> 5 <script src="js/hoge.php"></script> 6</head> 7<body> 8<h1>php2js</h1> 9</body> 10</html>

hoge.php

javascript

1alert("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が実行されるためにはどうしたら良いですか?

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

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

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

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

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

miyahan

2017/07/12 00:10

JavaScriptのファイルを .php で保存したい理由が全くわからないのですが、意図・またはそれに至った経緯を教えて下さい。
shi_ue

2017/07/12 00:36

もしあなたが、php2js.devの所有者でないなら、例示ドメインは、example.jpexample.com をご利用ください。
taro_nii_chan

2017/07/12 02:10

miyahanさま、 webページに碁盤を表示できるjavascriptツール「maxiGos」というのを使いたいのですが、その中で階層構造の下の方で.php拡張子のjavascriptが使われているのです。今回は問題判別のため、このようなミニマムな構成を意図的に作ってみました。
taro_nii_chan

2017/07/12 02:12

shi_ueさま、 「.dev」と言うのは laravel の valet で作られたローカルなドメインです。「ping php2js.dev」とすると、「127.0.0.1」を見に行ってるのが分かります。
coba-coba

2017/07/12 02:55

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

回答2

0

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

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

投稿2017/07/12 00:40

shi_ue

総合スコア4437

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

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

taro_nii_chan

2017/07/12 02:25

質問本文に「MAMPでの動作確認」と「laravelでの動作確認」と書いた通り、ローカルアクセスポイントは2つあり、「http://localhost/php2js/」 (MAMP)と、「http://php2js.dev/」 (laravel)です。 MAMPでは想定通り動き、laravelだとエラーになる、という事です。
miyahan

2017/07/12 07:00 編集

> laravelだとエラーになる だから Laravel 用の .htaccess の設定がおかしいので見直せと言われてるんですよ? ちなみに実際に試したところ、hoge.php でも hoge.js でもアクセス可能でした。
taro_nii_chan

2017/07/12 09:13

「.htaccess .phpをjavascriptとしてscriptのsrcに指定」など、色んなキーワードで調べてるのですが、 <FilesMatch "\.(js)$"> AddHandler application/x-httpd-php .js </FilesMatch> などのように .js を php として動かす例は載っていてもその逆が見つかりません。 .htaccess をどう設定すれば出来るのか教えていただけますか?
miyahan

2017/07/12 09:54

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

2017/07/12 11: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 となっていました)
miyahan

2017/07/12 11:26

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

0

自己解決

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

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

投稿2017/07/14 06:52

taro_nii_chan

総合スコア207

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問