Symfony应用程序403禁止访问错误:您没有权限访问此服务器上的 /。

5
我正在尝试在CentOS7的Linode服务器上运行一个Symfony应用程序,但是我遇到了一个错误:
Cannot serve directory <path to project>: No matching DirectoryIndex (index.html, index.php) 

我已为此子域设置了虚拟主机,并使用以下配置:

<VirtualHost *:80>
     ServerAdmin pak11273@gmail.com
     ServerName mister
     ServerAlias project.mystuff.com
     DocumentRoot /var/www/html/project
     ErrorLog /var/www/html/project/logs/error.log
     CustomLog /var/www/html/project/logs/access.log combined
     <Directory "/var/www/html/project" >
         #Options FollowSymLinks
         Options -Indexes
         AllowOverride All
         Require all granted
     </Directory>
</VirtualHost>

我的当前设置如下:
1)我的Web服务器用户和组是apache
2)我对/var/www/html/project的权限为755,属于apache:apache

我尝试了以下互联网上的建议,但都无济于事:

1)将Options -Indexes更改为Options +Indexes
2)添加DirectoryIndex index.html
3)如果我更改/var的根所有权,则会出现服务器错误。


你应该指向app.php而不是index.html吧? - Derick F
2
你是否将Symfony标准版附带的web目录替换为project,或者/var/www/html/project目录指向你项目的根目录? - xabbuh
@xabbuh 是正确的 - 我已经更新了我的帖子。试试看吧。 - Alvin Bunk
是的,我漏掉了网页目录。它在Symfony文档中的Web服务器设置中,但我可能错过了它。 - Isaac Pak
@xabbuh 我应该将Bunk的回答标记为正确答案吗?你在评论中给出了我问题的正确答案,但我不确定这是否解决了我的问题。 - Isaac Pak
由于Alvin的答案现在包含了所有所需的信息,如果您接受他的答案,我完全没问题。 :) - xabbuh
2个回答

5

我正在使用CentOS 6和Apache。尝试进行以下更改:

<VirtualHost *:80>
     ServerAdmin pak11273@gmail.com
     ServerName mister
     ServerAlias project.mystuff.com
     DocumentRoot /var/www/html/project/web
     ErrorLog /var/www/html/project/var/logs/error.log
     CustomLog /var/www/html/project/var/logs/access.log combined
     <Directory "/var/www/html/project/web" >
         Options Indexes FollowSymLinks MultiViews
         AllowOverride All
         Require all granted
     </Directory>
</VirtualHost>

请确认你能够使用wget或者curl在本地主机上获取Symfony的index.html页面。CentOS可能启用了SELinux甚至iptables。

使用sestatus命令查看是否已设置为enforcing,如果是,则需要允许网络或者临时禁用SELinux。

xabbuh是正确的,"web"目录是你需要用作Web根目录的文件夹。我已经更新了我的帖子以反映所需的更改。


1
你也可以查看这个链接 - Alvin Bunk
嗨,艾萨克。你可以通过选择向上箭头和绿色勾号来标记我的回答。另外,看一下我关于在RHEL上设置Apache&Symfony的博客,这将类似于CentOS。我认为这篇博客也可能对你有其他帮助。 - Alvin Bunk
对我来说,只需要添加 AllowOverride All 就可以了,但是之前缺少了这个。 - Black

0
根据您的Apache配置,看起来您正在尝试从/var/www/html/project目录中提供您的Symfony项目。然而,按照惯例,Symfony应用程序应该从位于Symfony项目根目录内的public目录中提供。尝试从根目录提供可能会导致问题,比如403错误。请确认您的DocumentRoot是设置为Symfony项目的根目录还是其中的public目录。如果设置为根目录,请将DocumentRoot更改为public目录,这可能解决您的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接