php - 重建 VM 后 apache2 中的 Symfony2 URL 404

标签 php apache symfony

我们有以下系统:

  • 交响乐 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-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 文件中,问题就消失了。

关于php - 重建 VM 后 apache2 中的 Symfony2 URL 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23631217/

相关文章:

PHP/MYSQL如何获取事务中的last_insert_id

python - 从 Python 脚本重新加载 Apache

symfony - 如何在Symfony2上处理此错误消息: Case mismatch between loaded and declared class names?

php - 正则表达式在 PHP 中的工作方式与 C# 中的工作方式不同

php - 高级自定义字段 - 带有 true/false 复选框的 If/Else 语句

ruby-on-rails - 使用 Apache、Puma、Ubuntu 设置 Rails SSL

java - apache POI 范围中的自动过滤器不起作用

php - 什么 php.ini 文件使用 symfony 服务器 :run command?

php - 重复多对多关系

php - 处理太多 mysql 连接的最佳实践