在Apache中授予PHP写入权限

McK*_*yla 5 php apache2 httpd.conf apache2.2

我对配置Apache比较陌生.

我有一个PHP脚本,它根据从中检索的值写入JSON文件$_GET.

<?php

    file_put_contents('State.json', "{ do: '" . $_GET['do'] . "' }");

    echo "Success";

?>
Run Code Online (Sandbox Code Playgroud)

我通过创建XHR请求来运行该代码.

Ally.xhr('/Cream/Foam?do=someCommand');
Run Code Online (Sandbox Code Playgroud)

它返回的页面说 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>
Run Code Online (Sandbox Code Playgroud)

这些是给根服务器文件夹的权限.

我需要更改什么才能允许PHP写入文件?

(我几乎不知道上面的块意味着什么.)

Jan*_*yka 13

您需要检查运行apache的用户是否有权写入目录.

所以它是这样的:

你的apache服务器就是进程.该过程在某些用户(例如www)下运行.PHP在apache下运行.因此,如果您尝试使用PHP写入目录,那么就像用户www登录到服务器并尝试在同一目录中创建文件一样.因此,请检查该目录的所有者以及该目录的权限.你可以通过ls -la命令来做到这一点.如果www将是该目录的所有者,您将100%安全...

  • 请不要在面向公众的Web服务器上使用chmod 777. (11认同)
  • chown www-data:www-data~/Dropbox/Web和chmod 777~/Dropbox/Web (2认同)