- ベストアンサー
phpでfopen()やfputs()が使えない
CGIを使ってやりたいことがあり、PHPを独学で学び、レンタルサーバーで実験をしているのですが、fopen()やfputs()をつかうとエラーのようになります。 これがそれです。 http://pgc.sub.jp/form.php サーバーはlolipopというところを使っているのですが、こちらのほうが許可していないということでしょうか。 ソースは以下のようになります。 <html> <head> <title>実験掲示板</title> </head> <body> <h1>実験掲示板</h1> 書き込む内容を入力してください。<hr> <form name="form" action="./sample01.php" method="POST"> <input name="body" type="text" size="40"> <input type="submit" value="書込"><hr> </form> <?php $data = file("./data.txt"); for($i=0; $i<sizeof($data); $i++){ print "記事NO.${i}:${data[$i]}<br>\n<hr>"; } ?> </body> </html> <?php $body = $_REQUEST["body"]; $body = $body."\n"; ?><html> <head> <title>Sample01</title> </head> <body> <?php $fp = fopen("./data.txt","a"); fputs($fp,$body); fclose($fp); echo "書き込み完了<br>", "<a href=\"./form.php\">戻る</a>"; ?> </body> </html> プラス空のdata.txtファイル また、大学のPCを使用しているのですが、 http://localhost/ をすると 「Connection Failed」となってしまい、localhostでの実験ができません。これは大学側が禁止しているためでしょうか?研究室のものですので、IPアドレスはそれぞれに割り当てられているのですが。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
はじめましてwind-wingと申します。 http://pgc.sub.jp/form.php 拝見させていただきました。 Warningを確認した限りですと、 Permission denied と出ていますので、 そのdata.txtを書き出すところに 書き込み権限が無いようです。 $fp = fopen("./data.txt","a"); と書いているようですので、追記モードですものね。 書き込み権限が無いために$fpにファイルストリームが オープンできずにfputs()およびfclose()ができない となっていると思いますので、 そのディレクトリに書き込み権限を 与えてみてください。
その他の回答 (1)
- KanjistX
- ベストアンサー率55% (48/86)
http://localhost/についてですが、ApacheやhttpdのようなWebサーバーのプログラムはインストールされてますか?そして起動していますか? PHPやPerlなどによるCGIプログラムのテスト環境は、たいてい最初から入っているものではありません。 そして、テスト環境の設置は、ネットワークに依存するものではないので、研究室のPCであろうと構築可能だと思います(ただしセキュリティに十分注意する必要があります!!)。 テスト環境が整ってないならば参考URLに示すサイトからXAMPPという開発環境のセットをインストールすることをお勧めします。セキュリティに関しても参考URLに記載されています。
お礼
ご紹介のソフトで試行錯誤の後、できました!「あなたの予想に反して、このページが見えているでしょうか?」とでたときには驚きました。 本当にありがとうございます。
補足
phpdev5で試みていたのですが、こちらのほうが良さそうですね。よいソフトを教えていただき、ありがとうございます。ですが、やはりConection failedとなり、できないようです。ApacheやPHPを個別に入れて、マニュアル通りの設定をしているのですが。原因として何か考えられることはありますか?
お礼
属性タブで仰る通りにしてみたところ、できました!ありがとうございます。愚作をお目にかけてしまい恐縮です。どんどんステップアップし、多くの人にとって有用なサイトができるようにしたいと思います。