我们有以下系统:
- 交响乐 2
- 在 Ubuntu LTS 12.04 上运行
- 由 apache2 2.2.22 提供服务
- Jenkins 每天至少构建一次项目
- 每次都使用 Vagrant & Puppet 从头开始创建运行时环境
问题:Symfony URL 突然不再提供服务。
虽然 curl localhost:8081/app_dev.php
工作得很好(当然它从 Symfony 产生了一条错误消息,但它是 Symfony 回答了),所有真正的 symfony URL 停止工作:
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
URL 的行为方式完全相同。
Apache 配置、虚拟主机和 .htaccess
都没有在运行和失败运行之间发生变化。 Symfony 路由也没有改变。
哪里出了问题?
最佳答案
出于某种原因,在 puppet 配置期间安装了 libapache2-mod-php5filter
而不是 libapache2-mod-php
。我们没有在 list 中明确说明应该安装 libapache2-mod-php5
,而是作为 php5
的依赖项安装。
基本上 libapache2-mod-php5filter
与 libapache2-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 文件中,问题就消失了。
关于php - 重建 VM 后 apache2 中的 Symfony2 URL 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23631217/