2

LinuxのfedoraマシンにApacheサーバーをインストールし、次のtest.phpとtest.htmlをvar / www / htmlに配置しましたが、Firefoxで127.0.0.1 / test.htmlを開くと、test.phpが作成されません。 text.txtファイルはもちろん、ファイルに文字列を書き込むこともでき、「echo$var」の出力もありません。

エラーは

Warning: file_put_contents(test.txt): failed to open stream: Permission denied in /var/www/html/getdata.php on line 7

ディレクトリの権限は次のとおりです。

drwxr-xr-x. 2 root root 4096 Nov  6 14:14 html

test.php:

<?php
$v="x";
$fname='test.txt';
$rv=file_put_contents($fname,$v);
echo $rv;
echo $v;
?>

test.htmlは非常に複雑なので、サーバー上のファイルに複雑なものを書き込むことを計画しましたが、問題があるため、test.phpを簡略化しました。

test.html:

<!DOCTYPE html>
<html>
<body>

<form id="yourFormID" method="POST" action="/getdata.php" ></form>

<script>
  function sendArray( theArray )
  {
    var frm = document.getElementById('yourFormID');
    fld = document.createElement("INPUT");
    fld.name ="data"; 
    fld.type = "hidden";
    fld.value = JSON.stringify(theArray);
    frm.appendChild(fld);  
    frm.submit();
   }

   var yourArray = [0.000023323,0.00001292,0.00003323];

    sendArray( yourArray );

    </script>
    </body>
    </html>
4

2 に答える 2

2

これはLinuxのパーミッションの問題です。試す:

chmod 777 path/to/test.txt

コマンドラインで。

編集:これはLinuxファイルのパーミッションに関する素晴らしい記事です。http://www.tuxfiles.org/linuxhelp/filepermissions.html

編集2:file_put_contents追加するかもしれませんが、ファイルに適切な権限を設定することが、 PHPがそのファイルを操作できる唯一の方法ですfwrite

于 2012-11-06T13:22:19.483 に答える
2

htmlディレクトリは現在rootが所有していますが、FedoraではWebサーバーは「apache」ユーザーとして実行されます。( https://fedoraproject.org/wiki/Administration_Guide_Draft/Apache?rd=Docs/Drafts/AGBeta/Apacheの「Apacheファイルのセキュリティ」セクションを参照してください)

したがって、ルートとして、次のようにします。

 chown -R apache:apache /var/www/html/
 chmod -R 770 /var/www/html

1つ目は、Webサーバーがディレクトリを所有するようにします。2つ目は、「apache」グループのユーザーのみがファイルの読み取り/書き込みを行えるようにします。また、マシン上の他のユーザーはそれらを読み取ることさえできないと言っています。

Webツリーにファイルを書き込める別のユーザーが必要な場合は、それらを「apache」グループに追加します。

于 2012-11-06T13:45:48.800 に答える