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

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

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

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

Q&A

解決済

3回答

22443閲覧

PHP ブラウザにソースコードがそのまま表示

taka.yan

総合スコア21

PHP

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

0グッド

0クリップ

投稿2015/05/12 14:07

編集2015/05/12 14:54

超基本的な質問ですみません。

いままでHTML/CSSしかいじってこなかったのですが、参考書を見ながら2日前からPHPの勉強を始めました。そこで以下のような初歩的なプログラムを動かしたのですが、送信ボタンを押すとphpに飛ぶものの、ブラウザに受け取った値ではなくソースコードがそのまま表示されてしまいます。
OSは Mac OS X Yosemite
ソフトはMAMPを使用
apache以下httpd.confのphp設定も適用されています。

■index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <form method="post" action="check.php"> <input name='name' type="text" style="width:100px"> <input type="submit" value="送信"> </form> </body> </html>

■check.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php print $_POST['name']; print "様"; ?> </body> </html>

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

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

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

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

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

guest

回答3

0

お約束ですが

<?php phpinfo(); ?>

はちゃんと見れますか?
確認済みなら、無視してください。

投稿2015/05/12 20:21

cateye

総合スコア6851

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

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

taka.yan

2015/05/13 09:11

コメントありがとうございます。その点は確認いたしました(m_ _)m
guest

0

ベストアンサー

apache以下httpd.confのphp設定もコメントアウトされています。

コメントアウト(=コメントしてある #で始まっている)であれば、それが原因だと思います。
コメントを外してPHPを有効にする必要があります。

事象からファイル名(拡張子)からPHPを起動させる。という設定が動作していないように見えます。
(テキスト文書と認識されたので、まま出力されたかと)

投稿2015/05/12 14:33

kurosawa

総合スコア780

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

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

taka.yan

2015/05/13 09:10

コメントありがとうございます。書き間違えでコメントアウトではなく逆ですね。すみません・・・ httpd.conf以外に設定で考えられる問題点はありますか?
kurosawa

2015/05/13 10:08

下記返答を見ると phpinfo() は動作しているようですね。 phpinfo() を確認した環境が、同じサーバ、同じディレクトリであれば、同じhttpd(httpd.conf)なので、PHPは動作していますね。 さて切り分けとして、現在テキスト出力されてしまう check.php を phpinfo(); の1行だけにして呼び出してみたらどうなるでしょうか? テキストで出てきたら、httpd.confとか PHPの設定がおかしいですし、 ちゃんと PHP設定情報が 出力されたら <?php print $_POST['name']; print "様"; ?> ここが PHP として解釈されてないと判断できますが、どうでしょう。
taka.yan

2015/05/13 14:43

再びコメントありがとうございます! 上記の件ですが ローカルホストで開くとバージョン情報が表示されますが、index.htmlからですとテキストのまま表示されてしまいます。
kurosawa

2015/05/13 15:05

ローカルホストで開く。という意味は、 http://localhost/check.php を直接ブラウザで参照した場合は、PHP Version が表示されるが、 http://localhost/index.html を表示させ、ボタン押下で遷移させた場合はテキストで表示されてしまうってことですか? Q1 そのときのパスは http://localhost/check.php になってますか?  → ブラウザから直アクセスしたものと同じものが呼ばれているか? Q2 出力されたテキストには追加した phpinfo() が出力されてますか?
taka.yan

2015/05/13 15:26

直アクセスしたときはhttp://localhost/check.phpですがindex.htmlから飛んだときはfile:///Applications/MAMP/htdocs/check.phpです。テキストには出力されてます。
kurosawa

2015/05/13 15:31

fi;e:// から始まっているときはwebサーバを介さず、ブラウザが直接ファイルを参照しにいきます。(ブラウザのファイルで開く。と同じ挙動です) index.html の check.php の前に"/"をつけてお試しください。 <form method="post" action="check.php">       ↓ <form method="post" action="/check.php">
taka.yan

2015/05/13 15:48

やってみましたが、ページを開けませんでした・・・ パスはfile:///check.phpです。ごめんなさい・・・
kurosawa

2015/05/13 15:52

もう少し言うと 上記は、index.html も check.php もドキュメントルート直下に配置した場合です。 もし、http://localhost/hoge/index.html など、途中にディレクトリを挟んでいる場合には、 <form method="post" action="/hoge/check.php"> ~~~~~ と加えないと、404 NotFound などと言われてしまいます。 まずはフルパスを記載してみて <form method="post" action="http://localhost/check.php"> ~~~~~~~~~~~~~~~ 参照できることを確認してから 相対パス(/check.php)に切り替えるのがベターでしょう。
taka.yan

2015/05/13 15:58

絶対パスを記入した場合、無事に動きました! ただ参考書では同一フォルダ内に2ファイルを配置した場合でもaction="check.php"で動くそうなので謎ですが、とりあえずありがとうございます! 長くおつきあいいただき感謝です!
kurosawa

2015/05/13 16:02

> パスはfile:///check.phpです。ごめんなさい・・・ form のアクションに相対パス(頭に/をつけて呼び出す)を指定した場合は、 file:// に遷移しないはずなのですが、、、 そうなっているということは、呼び出す前の index.html も file://hogehoge/index.html とかになっていませんか? そもそも最初から ウェブサーバを介していない状態に見えますがいかがでしょう
kurosawa

2015/05/13 16:11

解決したようですね。 けど絶対パスを指定したら動作するのは、実は当たり前で(ブラウザから直接呼んでいるのと同じ状態なので)、 最初の index.html がウェブサーバで正しく動作し、そこからウェブサーバに check.php をアクセスできていることが正しい状態です。 アクションにセットするパスは、絶対パスも相対パスもセットできますが、本来は相対パスで記載するものです。(開発サーバと本番サーバでドメインが違ったりするので、いちいち変えなきゃいけなくなるので・・・) あと、file:// から呼ばれていたら、おかしい?と思うことがまず必要ですね。 最初はそこからです。 私も同じ状態でしたので安心してください。 こっから、おもしろくなってきますので・・・ では。
guest

0

apache以下httpd.confのphp設定もコメントアウトされています。

これはどういう意味でしょうか?
Apache で php に関する必要最小限の設定(AddHandler や AddType)
がなされていないと、そもそも php に制御が移りません。

投稿2015/05/12 14:30

hotta

総合スコア1613

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問