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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

2回答

1706閲覧

vagrant、apache、phpで簡易BBSを作ろうとしています

zenobread

総合スコア44

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2018/11/18 14:39

編集2018/11/19 07:31

前提・実現したいこと

PHPでBBSを作ろうとしており、シンボリックリンクでVagrantfileがあるところに目的のphpファイルを行うことが出来ました。ですがそれをブラウザで検索しても見つかりません。

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

見にくいですがhtmlフォルダ上にきちんとbbs.phpがあります

該当のソースコード

<html> <head><title>BBS</title></head> <body> <p>掲示板</p> <form method="POST" action="<?php print($_SERVER['PHP_SELF']) ?>"> <input type="text" name="personal_name"><br><br> <textarea name="contents" rows="8" cols="40"> </textarea><br><br> <input type="submit" name="btn1" value="投稿する"> </form> <?php if($_SERVER["REQUEST_METHOD"] =="POST"){ writeData(); } readData(); function readData(){ $keijiban_file='keijban.txt'; $fp=fope($keijiban_file,'rb'); if($fp){ if(flock($fp,LOCK_SH)){ while(!feof($fp)){ $buffer=fgets($fp); print($buffer); } flock($fp,LOCK_UN); }else{ print('ファイルロックに失敗しました'); } } fclose($fp); } function writeData(){ $personal_name=$_POST['personal_name']; $contents=$_POST['centents']; $contents=nl2br($contents); $time=print(date("Y/m/d H:i:s")); $data = "<hr>¥r¥n"; $data = $data."<p>投稿者:".$personal_name."</p>¥r¥n<p>".$time."</p>¥r¥n"; $data = $data."<p>内容:</p>¥r¥n"; $data = $data."<p>".$contents."</p>¥r¥n"; $keijban_file = 'keijiban.txt'; $fp = fopen($keijban_file, 'ab'); if ($fp){ if (flock($fp, LOCK_EX)){ if (fwrite($fp, $data) === FALSE){ print('ファイル書き込みに失敗しました'); } flock($fp, LOCK_UN); }else{ print('ファイルロックに失敗しました'); } } fclose($fp); }?> </body> </html>

試したこと

以前はVirtualboxで開いてviコマンドでhtmlファイルを作ったことがあったのですが、
cmdでvagrantupを立ち上げたのちphpファイルを作成しChromeで開こうとしましたが開きませんでした。
またVirtualboxで開いてた頃はviコマンドで作ったファイルは開けていたのに
cmdからvagrantupして同じようにviコマンドで作ったファイルは開くことが出来ませんでした

現状
phpファイルを開くことはできたがブラウザではhtml部分しか表示されず、
php部分のsyntaxerrorを修正しても同じerrorがerror_logで表示されます。

シンボリックリンク
Vagrantfileのディレクトリにきちんとファイルはある
httpアクティブ
ファイアーウォールoff iptables off
SELinux off
sudo /sbin/iptables -I INPUT 5 -p tcp -m tcp --dport 80 -j ACCEPT
sudo /sbin/iptables -I INPUT 6 -p tcp -m tcp --dport 443 -j ACCEP
友達に話して昨夜これだけのことを変更し、再起動しました

完成
keijiban.txtファイルを作成
chmod 777 keijiban.txtでファイルパーミッションを設定
phpファイル内のミスを修正
\n\rなど余分な記号を排除
ただvagrantでcurl検索してもphpファイル内の内容は見えない
Chromeブラウザではきちんと表示される

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

centos70
Virtualbox
Windows10

ここにより詳細な情報を記載してください。

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

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

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

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

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

ssasaki

2018/11/19 02:29

「ですがそれをブラウザで検索しても見つかりません。」具体的にどのように検索してどのような状態になるのでしょうか?もう少し詳細が無いと単なるタイプミスみたいな話もあるので回答のしようがないと思います
ssasaki

2018/11/19 02:37

であれば、Vagrant環境自体は正常だと思います。PHPに何らかのエラーがあるということですね。
taka-saan

2018/11/19 03:27

500 Internal Server Error なら、/var/log/httpd/error_log にエラー内容が出力されているので、エラーに対応してください。
zenobread

2018/11/19 03:29

エラー対応した結果、htmlファイルはhttp://192.168.33.10/index.htmlでブラウザで表示することが出来ましたが、目的のphpファイルは開くことが出来ません
taka-saan

2018/11/19 03:35

/var/log/httpd/error_log にどんなエラーが出力されて、あなたはどんなエラー対応をしたのですか?それをご提示いただけなければ回答のしようがありません。質問を修正して教えてください。
ssasaki

2018/11/19 03:41

開くことは出来ています。開いた結果が500エラーですね。質問を書き直した方が良いでしょう。
zenobread

2018/11/19 03:43

失礼しました。error_logを開いて確認したところsyntaxerorrが出ておりphp部分に打ち間違いが存在したのでそこをviエディタを開き修正しました。しかしそれによりphpファイルをブラウザで開くことが出来ましたが、ブラウザで表示されるのはあくまでhtml部分のみでphpで書いた部分は表示されません。上のソースコードに該当のphpファイルを載せます。
zenobread

2018/11/19 03:46

ただphpファイルを開くことが出来ましたが、まだ500errorが出たのでerror_logで見ると先ほど修正した部分が反映されておらず、同じsyntaxerrorが出てきました
ssasaki

2018/11/19 03:48

keijban.txt というファイルはあるのですか?
zenobread

2018/11/19 03:54

そこに気づいてtxtファイルを作成しましたが、lsコマンドで探しても反映されないです
kunai

2018/11/19 04:18

まず、```$ php -l bbs.php```で、SyntaxErrorをすべて確認して下さい。 同じ行で複数のSyntaxErrorがある場合、1つのエラー箇所を修正しても、同じ行指定のSyntaxErrorが出るのは当然です。
zenobread

2018/11/19 07:20

syntaxerrorは何とか終わりました!最後にphpファイル内で使われている\nなどの記号がウエブページ上にも見えてしまうので修正中です!
guest

回答2

0

keijban.txt がなければ PHP 部分は何も表示されないようですので、正しい挙動ですね。
表示されるような keijban.txt を作成してみましょう。

投稿2018/11/19 04:34

ssasaki

総合スコア1167

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

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

zenobread

2018/11/19 07:22

最後にphpファイル内で使われている\nなどの記号がウエブページ上にも見えてしまうので修正中です!
guest

0

ベストアンサー

45行目にタイプミスがありますね。

×:$contents=$_POST['centents']; 〇:$contents=$_POST['contents'];

47行目のダブルコーテーションの位置がおかしいです。

× $time=print(date("Y/m/d" H:i:s)); 〇 $time=date("Y/m/d H:i:s");

もうひとつタイプミス

readとwriteで異なっている $keijiban_file='keijban.txt'; $keijiban_file='keijiban.txt';

keijiban.txtが作成されないのは、ディレクトリにパーミッションがないからでしょう。
chmod 777 .

そのほかにも複数エラーがあります。 fope()、エラーの時のfclose()呼び出し

いずれにしても、エラーが出るたびに、error_logに内容が出ますから、
もう少しご自分でデバッグしてください。
一見動いているときでもおかしなところではWarningが出ます。

投稿2018/11/19 03:50

編集2018/11/19 04:31
taka-saan

総合スコア665

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

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

zenobread

2018/11/19 07:21

おかげさまでエラーは出なくなりました!ただphpファイル内で使われてる\nなどの記号が消えないので消す方法を探しています!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問