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

测试.php:

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

test.html 太复杂了,因为我打算在服务器上的文件中写一些复杂的东西,但是由于有一些问题,我简化了 test.php

测试.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

html 目录当前由 root 拥有,但在 Fedora 下,Web 服务器以“apache”用户身份运行。(参见https://fedoraproject.org/wiki/Administration_Guide_Draft/Apache?rd=Docs/Drafts/AGBeta/Apache的“Apache 文件安全”部分)

因此,以 root 身份执行以下操作:

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

第一个使 Web 服务器拥有该目录。第二个确保只有“apache”组中的用户才能读/写文件。它还说机器上的其他用户甚至都无法阅读它们。

如果您需要其他用户能够将文件写入您的 Web 树,请将它们添加到“apache”组。

于 2012-11-06T13:45:48.800 回答
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 回答