重建VM后,apache2中的Symfony2 URL 404

时间:2014-05-13 12:25:25

标签: php apache symfony

我们有以下系统:

  • Symfony 2
  • 在Ubuntu LTS 12.04上运行
  • 由apache2 2.2.22提供。
  • Jenkins每天至少建立一次项目
  • Vagrant& Puppet用于每次从头开始创建运行时环境

问题:突然间Symfony网址不再提供了。

虽然curl localhost:8081/app_dev.php像魅力一样工作(当然它产生了来自Symfony的错误消息,但 Symfony已回答),所有真正的symfony网址都停止了工作:

vagrant@precise64:~$ curl localhost:8081/app_dev.php/_test/data/class/clean
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /app_dev.php/_test/data/class/clean was not found on this server.</p>
<hr>
<address>Apache/2.2.22 (Ubuntu) Server at localhost Port 8081</address>
</body></html>

通常,Apache应该将该URL提供给app_dev.php并完成它; app.php网址的行为方式完全相同。

Apache config,vhosts和.htaccess在运行和运行失败之间都没有发生变化。 Symfony路由也没有改变。

可能出了什么问题?

1 个答案:

答案 0 :(得分:3)

由于某些原因,在木偶配置期间安装了libapache2-mod-php5filter而不是libapache2-mod-php。我们没有在清单中明确声明应该安装libapache2-mod-php5,而是将其安装为php5的依赖项。

基本上libapache2-mod-php5filterlibapache2-mod-php5的模块相同,只是它支持过滤器:

 Unless you specifically need filter-module support, you most likely
 should instead install libapache2-mod-php5.

这两个包是互斥的(至少在debian / ubuntu中)

我不确定如何安装该软件包而不是libapache2-mod-php5,但安装libapache2-mod-php5解决了问题(因为它自动卸载了libapache2-mod-php5filter)。

我们将该软件包安装到我们的puppet文件中,问题就消失了。