0

我正在尝试使用 Ajax(方法GET)发送一些数据来/root/Site/test/index.php构建链接,如下所示:

/root/Site/test/index.php/section/option/value

但我从服务器收到这条消息:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /root/Site/test/index.php/section/option/value
on this server.</p>
</body></html>
Forbidden

根据我所阅读的内容,我已经设置了test文件夹的权限,甚至设置了Siteto sudo chmod -R g+rx(我也尝试过没有sudo),但我仍然收到错误。为什么?!

4

4 回答 4

1

通过使用:

sudo chmod -R g+rx

您只是授予组的读取和执行权限,并且 apache 服务作为守护程序运行,运行 apache 的用户与文件所有者不同,可能不属于文件的组。

sudo chmod 755 filename

使用它,您允许每个人读取文件,并且只允许所有者写入权限。

对于文件夹,使用 -R 执行相同操作以应用于其所有内部文件。

sudo chmod -R 755 foldername

** 不要分配权限 777,因为这会使文件容易受到不希望的修改。除非你是 100% 777 是一个安全问题。

于 2012-10-25T19:44:11.740 回答
1

还要仔细检查您的 httpd.conf 目录子句中是否有“全部允许”。

<Directory "/home/domain/www">
        Options +Indexes FollowSymLinks +ExecCGI
        AllowOverride AuthConfig FileInfo
            Order allow,deny
        Allow from all
</Directory>
于 2012-10-25T19:59:17.963 回答
0

服务器可能正在访问另一个用户下的文件。它是 Debian Linux 安装中的 www-data:www-data。尝试给它 chmod -R 777 或 chmod -R a+rwx 代替。

另一个选项是你没有正确配置 httpd.conf,所以也要检查一下。

于 2012-10-25T19:45:15.030 回答
0

另一种可能性,因为你的路径是

 /root/Site/test/index.php/section/option/value
                 ^^^^^^^^^--- actual php script
                          ^^^^^^^^^^^^^^^^^^^^^-- extra stuff

确保启用 Apache 的AcceptPathInfo( docs ) 选项。否则,额外的位将被视为 url 路径的一部分,而不是 PHP 脚本的 path_info 的参数。

于 2012-10-25T21:18:15.313 回答