Apache 403 error, (13)Permission denied: access to / denied问题

虚拟主机(Virtual Host)是指在一个机器上运行多个网络站点 (比如:www.company1.com和www.company2.com)。 如果每个网络站点拥有不同的IP地址,则虚拟主机可以是"基于IP"的; 如果只有一个IP地址,也可以是"基于主机名"的, 其实现对最终用户是透明的。具体细节可以查看Apache官方说明 。

  一. “基于主机名”虚拟主机的配置

  Listen 81 
  NameVirtualHost *:81 
  <VirtualHost *:81 >
       ServerAdmin example@company.com
       DocumentRoot  yourRoot 
      <Directory "yourRoot ">
       Options FollowSymLinks
       AllowOverride None
       Order allow,deny
       Allow from all 
      </Directory>
  </VirtualHost>
 配置说明:

    81 : 为端口号,可以是其他现在系统未用的端口

    yourRoot : Linux下格式形如: /export/www    注意最后没有"/"

 将上面的添加到apache的配置文件httpd.conf(linux下在/usr/local/apache2/conf/,视具体情况而定),然后重新启动Apache .

注意:

要配置基于主机名的虚拟主机,必须保留原有的80端口。

 二. 查看配置是否成功

   在浏览器中输入 http://localhost:81 查看是否配置成功。

 三. 常见问题常见解决方案

 当在浏览器中查看配置成功与否出现问题时,可优先到Apache官方网站的FAQ 上或用搜索引擎搜索你的问题。

  我这里就最常见403问题:

Forbidden

You don't have permission to access / on this server.

提供几种常见的解决方法:

  1.按上面的配置正确,特别是:

      Order allow,deny
       Allow from all

  2. 确保youRoot文件夹下有index.html文件(或名为index而后缀为其他形式(如.jsp .PHP等)的文件) ,因为Apache默认以index.html为网站首页,如果没有这个文件就会出现上面的403错误。

  注:如果你想以其他形式的文件(如:index.jsp或index.php等)作为出现的网页,可将Apache的配置文件中的:

   <IfModule dir_module>
       DirectoryIndex index.html
   </IfModule>
   改为(如你想用index.jsp):

   <IfModule dir_module>
       DirectoryIndex index.html index.jsp 
   </IfModule>

   如果需要浏览该文件夹下的内容,可以在</Directory>前添加:

    Options Indexes

  就可以了。
  3. 针对linux用户,windows或其他用户一般没这种情况。linux系统中一般会自带apache,在修改了配置文件后,最好到安装Apache的目录下重启Apache。


如果是CentOS系统,则有可能以下原因

检查了一圈httpd.conf和目录权限,均没有发现问题。

最后,看了这篇文章,发现是因为系统启动了SELINUX导致的。

http://stackoverflow.com/questions/8816836/apache-403-error-13permission-denied-access-to-denied-fedora-16


关闭SELINUX

setenforce 0


vim /etc/selinux/config

修改

SELINUX=enforcing

改成

SELINUX=disabled


细检查了一遍配置文件httpd.conf,找到这么一段:

 代码如下 复制代码
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    deny from all
    Satisfy all
</Directory>

然后试着把deny from all中的deny改成了allow,保存后重起了apache,然后再一测试我的网页


apache

解决Apache下403 Forbidden错误

正 文:
    今天在公司电脑上安装Apache,版本2.2.8,装完刚测试可以;配置了下php的php.in文件再次localhost打开发现错误:HTTP 错误 403 - 禁止访问,即403 Forbidden:You don't have permission to access / on this server.权限又不够了?

 
马上打开apache的配置文件httpd.conf,逐行检查。在大约快一半的地方有以下这段代码:

 代码如下 复制代码

 
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

发现了吧。由于配置了php后,这里的“Deny from all”已经拒绝了一切连接。把该行改成“allow from all”,修改后的代码如下,问题解决。

 

 代码如下 复制代码
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    allow from all
</Directory>


系统是centos,You don't have permission to access / on this server.

在google上搜索了一下,大部分的解决方法就是。

 代码如下 复制代码

<Directory />

    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all 
</Directory> 这里改成

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride None
</Directory

>
我改了之后还是会出现上面的错误,于是看一下自己设定的工作目录权限。

 代码如下 复制代码
Options ExecCGI Includes

改成下面这行设置后,显示正常。

 代码如下 复制代码
Options Indexes FollowSymLinks

当访问类unix操作系统上的/usr/local/apache2/htdocs/foo/bar.htm文件时,你收到了Permission Denied的错误。

 首先,查看文件的访问权限:

 代码如下 复制代码

$ cd /usr/local/apache2/htdocs/foo
$ ls -l bar.htm

 如果须要的话,就修复它们:

 代码如下 复制代码

$ chmod 644 bar.html

对文件夹以及每个父文件夹做相同的操作

 代码如下 复制代码

(/usr/local/apache2/htdocs/foo,/usr/local/apache2/htdocs,/usr/local/apache2,/usr/local/,/usr):

$ ls -la
$ chmod +x
$ cd ..
$ #repeat up to the root

 在一些系统上,可使用工具namei来列出各个路径上的不同组件的访问权限,然后去发现是否有权限问题:

 代码如下 复制代码

$ namei -m /usr/local/apache2/htdocs/foo/bar.html

 3、最后,如果还是没有解决问题,那么需要查看扩展的访问权限。

使用setenforce 0关闭SELinux,看是否解决问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值