symfony 1.4.8与PHP 5.4.7和Apache 2.4.3冲突

时间:2012-12-19 21:40:05

标签: php apache symfony1 xampp symfony-1.4

我最近更新了我的Xampp服务器(从1.7>> 1.8),从那以后我再也无法运行用Symfony 1.4.8编写的项目了。

它说:

  

您无权访问所请求的目录。没有索引文档或目录是读保护的。

但它有权限!

实际上它适用于旧版本的Xampp。 Symfony 1.4.8是否可能与Apache 2.4或PHP 5.4不兼容?我正在使用Windows 8企业版,但也在Windows 7旗舰版上进行了测试,同样存在问题。

任何建议都将不胜感激。

这是我的配置:

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>

2 个答案:

答案 0 :(得分:6)

经过这么多天的挣扎之后,我终于找到了解决办法,我把它放在这里,有利于其他可能面临这个问题的人。根据{{​​3}}(感谢作者!)我所要做的就是:

更改每个目录块,如下所示:

<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 中的新指令需要(根据this article

答案 1 :(得分:1)

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

我建议删除:

<IfModule mod_rewrite.c>

并且它正在关闭.htaccess文件中的标记,如果它们存在,因为如果没有安装模块,最好得到一个没有安装它的错误,而不是网站不能以奇怪的方式工作。

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