いままで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>
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
apache以下httpd.confのphp設定もコメントアウトされています。
コメントアウト(=コメントしてある #で始まっている)であれば、それが原因だと思います。
コメントを外してPHPを有効にする必要があります。
事象からファイル名(拡張子)からPHPを起動させる。という設定が動作していないように見えます。
(テキスト文書と認識されたので、まま出力されたかと)
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
apache以下httpd.confのphp設定もコメントアウトされています。これはどういう意味でしょうか?
Apache で php に関する必要最小限の設定(AddHandler や AddType)
がなされていないと、そもそも php に制御が移りません。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
<?php
phpinfo();
?>
はちゃんと見れますか?
確認済みなら、無視してください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.09%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2015/05/13 18:10
httpd.conf以外に設定で考えられる問題点はありますか?
2015/05/13 19:08
phpinfo() を確認した環境が、同じサーバ、同じディレクトリであれば、同じhttpd(httpd.conf)なので、PHPは動作していますね。
さて切り分けとして、現在テキスト出力されてしまう check.php を
phpinfo(); の1行だけにして呼び出してみたらどうなるでしょうか?
テキストで出てきたら、httpd.confとか PHPの設定がおかしいですし、
ちゃんと PHP設定情報が 出力されたら
<?php
print $_POST['name'];
print "様";
?>
ここが PHP として解釈されてないと判断できますが、どうでしょう。
2015/05/13 23:43
上記の件ですが
ローカルホストで開くとバージョン情報が表示されますが、index.htmlからですとテキストのまま表示されてしまいます。
2015/05/14 00:05
http://localhost/check.php を直接ブラウザで参照した場合は、PHP Version が表示されるが、
http://localhost/index.html を表示させ、ボタン押下で遷移させた場合はテキストで表示されてしまうってことですか?
Q1
そのときのパスは http://localhost/check.php になってますか?
→ ブラウザから直アクセスしたものと同じものが呼ばれているか?
Q2
出力されたテキストには追加した phpinfo() が出力されてますか?
2015/05/14 00:26
2015/05/14 00:31
index.html の check.php の前に"/"をつけてお試しください。
<form method="post" action="check.php">
↓
<form method="post" action="/check.php">
2015/05/14 00:48
パスはfile:///check.phpです。ごめんなさい・・・
2015/05/14 00: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)に切り替えるのがベターでしょう。
2015/05/14 00:58
ただ参考書では同一フォルダ内に2ファイルを配置した場合でもaction="check.php"で動くそうなので謎ですが、とりあえずありがとうございます!
長くおつきあいいただき感謝です!
2015/05/14 01:02
form のアクションに相対パス(頭に/をつけて呼び出す)を指定した場合は、
file:// に遷移しないはずなのですが、、、
そうなっているということは、呼び出す前の index.html も
file://hogehoge/index.html とかになっていませんか?
そもそも最初から ウェブサーバを介していない状態に見えますがいかがでしょう
2015/05/14 01:11
けど絶対パスを指定したら動作するのは、実は当たり前で(ブラウザから直接呼んでいるのと同じ状態なので)、
最初の index.html がウェブサーバで正しく動作し、そこからウェブサーバに check.php をアクセスできていることが正しい状態です。
アクションにセットするパスは、絶対パスも相対パスもセットできますが、本来は相対パスで記載するものです。(開発サーバと本番サーバでドメインが違ったりするので、いちいち変えなきゃいけなくなるので・・・)
あと、file:// から呼ばれていたら、おかしい?と思うことがまず必要ですね。
最初はそこからです。
私も同じ状態でしたので安心してください。
こっから、おもしろくなってきますので・・・
では。