0

私は新しいPHP開発者です。サーバーにフラットファイルを書き込もうとしていますが、次のコードがあります。

<?php 
$myfile= "file1.txt";
if(isset($_POST['ta'])){
    $newData = nl2br(htmlspecialchars($_POST['ta']));
    $handle = fopen($myfile, "w");
    fwrite($handle, $newData);
    fclose($handle);
}

if(file_exists($myfile)){
    $myData=file_get_contents($myfile);
}
?>

<form action="file.php" method="post">
    <textarea name="ta" cols="64" rows="10"><?php echo $myData; ?></textarea>
    <br/> <br />
    <input name="myBtn" type="submit" />
</form>
<br/> 
<br/> 

<?php echo $myData; ?>

私が理解していないのは、どうして上記のプログラムがローカルホストで完全に機能するのに、実際のサーバーでは何もしないのかということです。

4

1 に答える 1

0

Webサーバーが実行されているユーザーがファイルに書き込み可能かどうかを確認する必要があります。これは、おそらくwww、などのようなapacheものであり、ユーザーとは異なりますwjones17。権限が次のようになっている場合

-rw-r--r--   1 wjones17  group     17 Nov 17 20:02 index.php

その場合、ユーザーにはそのファイルに変更を加える権限がありますが、Webサーバーを含め、他の誰も変更できません。その結果、として実行されているphpスクリプトなどがありwwwますapache

これを修正する方法に関しては、共有環境ではオプションが制限される可能性がありますが、すべてのユーザーに完全な特権を付与することは間違いなく悪い考えです。問題を「修正」しているように見えるかもしれませんが、あなたははるかに大きな問題に自分自身を開いているだけです。データベースを使用するなど、目的を達成するための別の方法があるかどうかを自問するかもしれません。それはすべてあなたの状況とあなたがやろうとしていることに依存します。

于 2012-11-30T04:07:08.177 に答える