Symfony 1.4.8与PHP 5.4.7和Apache 2.4.3存在冲突。

3
最近我更新了我的Xampp服务器(从1.7 >> 1.8),自那以后我就无法运行我的Symfony 1.4.8项目。
它说:
“您没有权限访问所请求的目录。要么没有索引文档,要么该目录已被保护。”
但是它有权限!
实际上,在较旧版本的Xampp中,它可以正常工作。Symfony 1.4.8与Apache 2.4或PHP 5.4不兼容吗?我正在使用Windows 8 Enterprise,但也在Windows 7 Ultimate上测试过,出现了同样的问题。
欢迎提供任何建议。
以下是我的配置:
NameVirtualHost 127.0.0.1:1111
Listen 127.0.0.1:1111
<VirtualHost 127.0.0.1:1111>
  DocumentRoot "D:\AMir\PROJECTS\BarzinMehr\web"
  DirectoryIndex index.php
  <Directory "D:\AMir\PROJECTS\BarzinMehr\web">
    AllowOverride All
    Allow from All
  </Directory>
  Alias /sf C:\xampp\htdocs\symfony\data\web\sf
  <Directory "C:\xampp\htdocs\symfony\data\web\sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

这是我的 .htaccess 文件内容:

Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
  RewriteEngine On

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  #RewriteBase /

  # we skip all files with .something
  #RewriteCond %{REQUEST_URI} \..+$
  #RewriteCond %{REQUEST_URI} !\.html$
  #RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

你确定已经像之前一样正确配置了整个堆栈吗?听起来像是Apache没有权限读取你的目录。小提示:将你的项目复制到另一个位置并将chmod 777分配给整个目录。这样能解决问题吗? - Tomasz Kowalczyk
@datasage:当我运行我的项目时,我遇到了这个错误。 - Firouziam
这取决于特定虚拟主机的设置。您是使用默认的“DocumentRoot”还是为此使用了“VirtualHost”子句? - halfer
@halfer:不行!没有起作用! - Firouziam
你的.htaccess是默认的吗?你能把它添加到你的问题中吗? - j0k
显示剩余9条评论
2个回答

7
在苦苦挣扎了多日之后,我终于找到了解决方案,并在此为可能遇到该问题的其他人提供帮助。根据这篇文章(感谢作者!),我只需要做以下操作:

将每个Directory块更改为如下格式:

<Directory "your address">
    AllowOverride All
    Allow from All
</Directory>

to

<Directory "your address">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Require all granted
</Directory>  

根据apache 2.4版本的文档,似乎Allow指令被新的Require指令所取代。


2
感谢您抽出时间回报解决方案,这句话准确概括了这个网站的宗旨。 - SDC
@SDC 谢谢,当然!我在这里看过很多次别人的答案,节省了很多搜索的时间,所以我也会为其他人做同样的事情! - Firouziam

1

尝试移除 .htaccess 文件,直接访问 index.php 文件。如果可以访问(或者至少出现 PHP 错误而非 Apache 错误),那么就说明 mod_rewrite 模块未启用,.htaccess 文件无法正常工作。

我建议移除以下内容:

<IfModule mod_rewrite.c>

如果模块未安装,最好从.htaccess文件中删除相关的开放标签和关闭标签,这样可以更好地提示模块未安装的错误,而不是网站以奇怪的方式无法正常工作。
如果上述方法不能解决问题,请查看Apache的错误日志 - 这通常包含有关问题的线索。

@rjmunro:不,没有!什么都没变! - Firouziam
@rjmunro:我也检查了Apache错误日志!它一直在说:“客户端被服务器配置拒绝:D:/AMir/PROJECTS/BarzinMehr/web/”或“客户端被服务器配置拒绝:D:/AMir/PROJECTS/BarzinMehr/web/favicon.ico”。 - Firouziam
@Firouziam - 那个错误会给你一些可以在网络上搜索的东西,让我们知道你找到了什么! - halfer

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