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>
4

2 回答 2

7

在为这个问题苦苦挣扎了这么多天之后,我终于找到了解决方案,我把它带到这里,以支持其他可能面临这个问题的人。根据这篇文章(感谢作者!)我所要做的就是:

像这样更改每个目录块:

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

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

似乎在apache 2.4中Allow被放弃,取而代之的是新指令Require(根据版本 apache 2.4 的文档

于 2013-01-31T13:09:06.133 回答
1

尝试删除 .htaccess 文件并index.php直接访问该文件。如果这有效(或至少产生 PHP 错误,而不是 apache 错误),则可能意味着 mod_rewrite 未启用,并且.htaccess未按预期工作。

我建议删除:

<IfModule mod_rewrite.c>

如果它们存在,它是来自 .htaccess 文件的结束标记,因为如果未安装该模块,最好得到一个未安装的错误,而不是该站点无法以一种奇怪的方式工作。

如果上述方法不能解决问题,请查看 apache 的错误日志 - 这通常包含线索。

于 2012-12-19T22:09:49.580 回答