php
1コード 2 <?php 3 if(isset($_POST['message']) && $_POST['message'] != ""){ 4 $f = fopen("message.txt", "a"); 5 fwrite($f, htmlspecialchars($_POST['message']) . "\n"); 6 fclose($f); 7 } 8 ?> 9 10 <form action="append.php" method="POST"> 11 <p>メッセージ: <input name="message" size="60"></p> 12 </form> 13 14 <pre> 15 <?php readfile("message.txt"); ?> 16 </pre>
フォームに入力した文字をmessage.txtというtextファイルに書き込みをして、そのmessage.txtに入ってる文字を読み込んで表示させるという処理を作ろうとしています。
PHPからtextファイルへ書き込みをしたく、実行したところ、反映されませんでした。
permissionの書き込み権限はコマンドで、
chmod u+w message.txt
のように入力し、
実際に権限が変更されているかPHPで、
php
1コード 2 if( is_writable("message.txt") ) { 3 echo 'こちらのファイルは書き込み可能です。'; 4 } else { 5 echo 'こちらのファイルは書き込み不可です。'; 6 } 7```と入力し、確認したところ、しっかり **__こちらのファイルは書き込み可能です。__** とブラウザに出力されました。 8しかし実行してもやはりtxtファイルに反映されません。 9 10 11 12最初に貼った 13<pre> 14<?php readfile("message.txt"); ?> 15</pre> 16の部分ではちゃんとtxtファイルの情報は読み込まれ表示されるので、読み込みに関しては問題ないと思います。 17 18 19 20 21解決方法を教えていただけると幸いです。 22 23ちなみにこれ以外のソースコードも貼っておきます。 24 25```php 26コード 27 //append.php 28 29 <?php 30 echo htmlspecialchars($_POST['message']); 31 ?>
if文の中まで正しく実行されていることは確認していますか?
(echoでデバッグ出力するなど)
OSは何でしょうか
「反映されません」とは何のことでしょうか
is_writableはファイルに何か影響を与えるものではないですよ
書き込み可否の確認をしたスクリプトはブラウザから実行しましたか? (コマンドを実行するユーザとhttp経由でアクセスするユーザは異なります)
--->Takumiboo
はい、if文の中まで確認しました。
chmodで権限を許可する前は、elseの処理でしたが、許可後はちゃんとtrueの処理が通りました。
-->m.ts10806
分かりづらく申し訳ありませんでした。
反映とは、PHPから書き込んだ文字がtxtファイルにちゃんと書き込まれているということです。
OSはMac OSです。
自分の認識では、is_writableはそのファイルは書き込みできる状態にあるかどうかを調べるものだと思っており、書き込みできる状態ならばtrue、できなければfalseが返ってくるという認識だったので、if文でそれを確認しました。
"a"
↓
"w"
にした場合はどうでしょう。
あとfwriteの前にfopenの結果を確認。
var_dump($f);