我在linux fedora机器上安装了apache服务器 我在var / www / html上放了以下test.php和test.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>
答案 0 :(得分:2)
这是Linux的权限问题。尝试:
chmod 777 path/to/test.txt
在命令行。
编辑:这是一篇关于Linux文件权限的精彩文章。 http://www.tuxfiles.org/linuxhelp/filepermissions.html
编辑2:我可能会添加,为文件设置适当的权限是PHP可以使用file_put_contents
,fwrite
等操作所述文件的唯一方法。
答案 1 :(得分: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”组中的用户才能读/写文件。它还说机器上没有其他用户甚至可以阅读它们。
如果您需要其他用户才能将文件写入您的网页树,请将其添加到“apache”组。