Forbidden 您无权访问此服务器。 Centos 6 / Laravel 4
Posted
技术标签:
【中文标题】Forbidden 您无权访问此服务器。 Centos 6 / Laravel 4【英文标题】:Forbidden You don't have permission to access on this server. Centos 6 / Laravel 4 【发布时间】:2014-02-25 06:13:38 【问题描述】:在我完成设置 LAMP 并安装我的 laravel 4 应用程序后,我遇到了一个问题。一切似乎都很顺利,当我继续使用我的 ip 地址 url 时,它会正确显示我的应用程序的第一页,但页面的所有其余部分都会向我抛出 404 错误请求的 URL 在此服务器上找不到。
所以我添加到我的 httpd.conf(在我的项目的虚拟主机下) - 允许覆盖所有 命令允许,拒绝
<VirtualHost *:80>
ServerName VPS-IP-ADDRESS
DocumentRoot /var/www/html/nextmatch/public_html/public/
<Directory /var/www/html/nextmatch/public_html/public/>
AllowOverride all
Order allow,deny
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]
</IfModule>
</Directory>
</VirtualHost>
现在当我尝试导航而不是 404 错误时,我得到了 Forbidden
您无权访问此服务器。
我设置了chmod 775 -R path/laravel/
和777 的文件夹存储,但我仍然遇到同样的错误,请问有什么建议吗?我无法弄清楚这个问题我快疯了!感谢您的帮助。
【问题讨论】:
确保文件夹的所有者是网络服务器用户的所有者。 ls -l 将显示文件属于谁。 你对网络服务器用户意味着什么?我在我的 vps 上拥有 root 访问权限,但我创建了另一个名为 nextmatch(项目名称)的用户,并且该用户是所有者。 在下面回答了您的问题。 【参考方案1】:网络服务器作为特定用户下的守护程序(服务)启动。该用户在 httpd.conf 中定义。默认情况下,该用户将是 apache。不要将 apache 用户与 httpd 进程混淆。后者是一个网络服务器守护进程,而前者是运行它的用户。如果您创建的文件夹属于 root 或 httpd.conf 中定义的用户以外的用户,则 apache 将无法访问它。识别此问题的方法是转到文件夹并执行 ls -l。如果在 httpd.conf 中定义的用户是 apache,那么为了让它访问文件夹,你应该看到:
drwxr-xr-x. 2 apache apache 4096 Jan 8 2013 public_folder
注意,上面写着“apache apache”,表示它属于 apache 用户和组。如果您是通过 root 创建的,那么您可能会看到:
drwxr-xr-x. 2 root root 4096 Jan 8 2013 public_folder
apache 用户无法访问 root 定义的文件夹。要解决此问题,请运行以下命令:
chown -R apache:apache myfolder
-R 选项是递归的,因此它将将该文件夹中所有文件夹和文件的所有权更新给 apache 用户。
如果您的所有权没有问题,那么尝试“暂时”关闭 selinux。在你做的centos上:
setenforce 0
这将关闭 selinux 直到下次重新启动。理想情况下,您需要让 selinux 保持开启以提高安全性,并为您的 apache 文件和文件夹设置有效的上下文。
如果关闭 selinux 确实有效,那么您的文件和文件夹可能有错误的安全上下文。运行以下命令来恢复您的安全上下文:
restorecon -R -v /var/www/
【讨论】:
我关闭了 selinux 并且它可以工作,但我想这不是一个好主意...如何设置 selinux 以访问此文件夹? 更新了答案。本质上,使用 restorecon 命令为文件和文件夹恢复正确的 selinux 上下文【参考方案2】:如果您使用的是 CentOS,则可能是 selinux 的问题。检查是否使用“sestatus”启用了 selinux。如果已启用,您可以使用“sudo setenforce 0”检查是否(暂时)是问题所在。如果 apache 可以为站点提供服务,那么您只需要使用 'sudo chcon -R -t httpd_sys_content_t' 递归更改文件的上下文(您可以使用 'ls -Z' 检查现有上下文。
Selinux 可能不是问题,但值得一试。
【讨论】:
【参考方案3】:在文件夹中试试这个:
chcon -R -t httpd_sys_content_t *
【讨论】:
【参考方案4】:chcon -R -t httpd_sys_content_t *
为我做了诀窍。
【讨论】:
【参考方案5】:来自 /etc/apache2/mods-available 中的 php5.conf
# Running PHP scripts in user directories is disabled by default
#
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
#<IfModule mod_userdir.c>
# <Directory /home/*/public_html>
# php_admin_value engine Off
# </Directory>
#</IfModule>
【讨论】:
以上是关于Forbidden 您无权访问此服务器。 Centos 6 / Laravel 4的主要内容,如果未能解决你的问题,请参考以下文章
Heroku 上的 Laravel 5.4。 Forbidden 您无权访问此服务器上的 /
您无权访问此服务器上的 /php/send.php 403 Forbidden [重复]
Ubuntu 12.10 Forbidden - 您无权访问此服务器上的 / [关闭]
Forbidden 您无权访问此服务器。 Centos 6 / Laravel 4
403 Forbidden 您无权访问此服务器上的 /c:/wamp/www/index.php
WAMP : Forbidden 您无权访问此服务器上的 /。 Apache/2.4.18 (Win64) PHP/5.6.19