質問 |
||
| 質問者:noname#64096 | phpでの更新管理がロリポップだとエラーが出てしまう。 | |
|---|---|---|
困り度:
|
はじめまして。 このたび業者さんにホームページを自分で更新できるプログラムを作って頂きました。 今まではさくらインターネットで使用していたのですが、今回ロリポップにしたところ、更新すると次のようなエラーが出てしまいます。 Warning: fopen(./data/news_08.txt) [function.fopen]: failed to open stream: Permission denied in /home/sites/lolipop.jp/users/lolipop.jp-dp16027581/web/edit/edit.php on line 23 Warning: flock(): supplied argument is not a valid stream resource in /home/sites/lolipop.jp/users/lolipop.jp-dp16027581/web/edit/edit.php on line 24 Warning: fputs(): supplied argument is not a valid stream resource in /home/sites/lolipop.jp/users/lolipop.jp-dp16027581/web/edit/edit.php on line 25 Warning: fclose(): supplied argument is not a valid stream resource in /home/sites/lolipop.jp/users/lolipop.jp-dp16027581/web/edit/edit.php on line 26 Warning: chmod() [function.chmod]: Operation not permitted in /home/sites/lolipop.jp/users/lolipop.jp-dp16027581/web/edit/edit.php on line 27 エラーを見てもさっぱりなんですが、解決方法などがわかる方いらっしゃいますでしょうか? どうかよろしくお願致します。 |
|
質問投稿日時:08/03/26 13:13 質問番号:3896073 |
||
回答良回答20pt |
|
| 回答者:agharta | 27行目の chmod($filename, 0666); を # chmod($filename, 0666); としてみてください。 もしくは、 chmod($filename, 0707);; ですかね? |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/03/26 19:12 回答番号:No.4 |
|
| この回答へのお礼 | ありがとうございます! # chmod($filename, 0666); としたところ無事機能しました! 本当に本当にありがとうございました! |
回答 |
|
| 回答者:agharta | phpファイルは604 news_08.txtを書き込むdataディレクトリが707 edit.phpの上から7行目にchmodがあると思いますが 実際はどのようなコーディングなのでしょうか? また、dataディレクトリの中には既にnews_08.txtなどがあるのでしょうか? |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/03/26 17:26 回答番号:No.3 |
|
| この回答への補足 | <?php $id = $_GET['id']; $mode = $_POST['mode']; $news = $_POST['news']; $title = "更新"; if ($id == 0) { $title = "新着情報"; } else { $title = $title . $id; } $filename = "./data/news_" . sprintf("%02d", $id) . ".txt"; $message = ""; if ($mode == "update") { $writedata = $news; $writedata = str_replace("\r\n","\n", $writedata); $writedata = str_replace("\r","\n", $writedata); $writedata = str_replace("\n","<br>", $writedata); $writedata = stripslashes($writedata); $fp = fopen("$filename", "w"); flock($fp, LOCK_EX); fputs($fp, $writedata); fclose($fp); chmod($filename, 0666); $message = "<p><font color=blue><b>更新しました。</b></font></p>"; } if (file_exists($filename)) { $fp = @fopen($filename, "r"); $readdata = ""; while (!(feof($fp))) { $buf = chop(fgets($fp, 1024)); if (!$buf) { continue; } $readdata .= $buf; } fclose($fp); } $news = $readdata; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title><?= $title ?></title> </head> <body bgcolor="#F3F3F3"> <form name="frmMain" method="post" action="<?= $editscript ?>"> <input type="hidden" name="mode" value="update"> <p>■<?= $title ?></p> <?= $message ?> <p align="center"> <textarea name="news" cols="80" rows="15" wrap="virtual" id="news"><?= str_replace("<br>", "\n", $news) ?></textarea> </p> <p align="center"> <input type="submit" name="Submit" value=" 更 新 "> </p> </form> </body> </html> |
| この回答へのお礼 | たびたびのご回答ありがとうございます。 プログラミングについてまったく知識がなく念のためすべてのコーディングを投稿させていただきました。 さくらインターネットでは使用できていたので、問題はないと思ったのですが、パーミッション以外にもなにか問題があるのでしょうか? どうかよろしくお願致します。 |
回答 |
|
| 回答者:agharta | http://lolipop.jp/?mode=manual&state=hp&state2=permission に詳しく書いてあると思います。 news_08.txtは書き込む必要があるディレクトリではないでしょうか。 また、CGIを動作させているのはウェブサーバであって、 契約者のアカウントとは別物と考えます。 そうすると、dataディレクトリのパーミッションは、707または777 となるのではないでしょうか。 以上、よろしくお願いします。 |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/03/26 14:05 回答番号:No.2 |
|
| この回答への補足 | 早速試してみたところ、 再度の行の Warning: chmod() [function.chmod]: Operation not permitted in /home/sites/lolipop.jp/users/lolipop.jp-dp16027581/web/edit/edit.php on line 27 だけが残ってしまいました。 他の行はすべて消えたので、あと少しだとは思うのですが・・・ ファイルは editフォルダの中に edit.phpが1つ(604) 編集の為のhtmlファイル(707に設定) dataフォルダ(中身もすべて707) 別ファイルでnewsread.phpというのがあったのですがこちらも604に設定したのですが、ダメでした・・・ 何度も本当に申し訳ございませんが、どうかよろしくお願致します。 |
| この回答へのお礼 | ありがとうございます。 早速試してみます。 本当にありがとうございます。 ちなみにphpデータのパーミッションは604のままでよろしいのでしょうか? 何度もすみません。 |
回答 |
|
| 回答者:agharta | /home/sites/lolipop.jp/users/lolipop.jp-dp16027581/web/edit/data ディレクトリのパーミッションはどうなっているのでしょうか? おそらく、書き込み権限が無いように思われます。 |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/03/26 13:34 回答番号:No.1 |
|
| この回答へのお礼 | 早速の解答ありがとうございます。 http://lolipop.jp/?mode=manual&state=hp&state2=cgi こちらのページを参考にしてパーミッションは「604」で設定しています。 お手数ですが、どうかよろしくお願致します。 |