我对配置Apache相对较新。
我有一个PHP脚本,它根据从$_GET
检索的值写入JSON文件。
<?php
file_put_contents('State.json', "{ do: '" . $_GET['do'] . "' }");
echo "Success";
?>
我通过创建XHR请求来运行该代码。
Ally.xhr('/Cream/Foam?do=someCommand');
它返回的页面显示failed to open stream: Permission denied on line 3.
<Directory "~/Dropbox/Web">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
这些是授予根服务器文件夹的权限。
我需要更改什么才能让PHP写入文件?
(我几乎不知道上面的块是什么意思。)
答案 0 :(得分:13)
您需要检查运行apache的用户是否有权写入目录。
所以就是这样:
你的apache服务器是进程。该过程在某些用户(例如www)下运行。 PHP在apache下运行。因此,如果您尝试使用PHP写入目录,那么就像用户www登录到服务器并尝试在同一目录中创建文件一样。因此,请检查该目录的所有者以及该目录的权限。你可以这样做,例如通过ls -la
命令。如果www
将成为该目录的所有者,那么您将100%安全......
答案 1 :(得分:1)
您可以尝试使用
设置权限 用于php的chmod函数并将您的目录设置为/ var / www,您通常具有足够的权限。
答案 2 :(得分:0)
使用以下命令行检查文件权限:
ls -l /path/filename
或者通过ftp客户端,如果你有ftp访问文件/目录。如果没有,你可以改变Stony所说的位置。
答案 3 :(得分:0)
检查它尝试写入的文件/目录权限。确保Apache进程正在运行的用户和/或组可以写入。
还要检查/ selinux / enforce的内容,检查SELinux是否已启用。如果是,请将其禁用或确保在您要写入的路径上设置正确的标签。
答案 4 :(得分:0)
知道有时候绝对没有办法只使用PHP来解决这个问题。
这两个解决方案是:
我经常发现后一种选择效果最佳。