【问题标题】:Symfony2 URLs 404 in apache2 after rebuild of VM重建VM后apache2中的Symfony2 URL 404
【发布时间】:2014-07-01 03:00:15
【问题描述】:

我们有以下系统:

  • 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 config、vhosts 和 .htaccess 在运行和失败运行之间都没有改变。 Symfony 路由也没有改变。

可能出了什么问题?

【问题讨论】:

    标签: php apache symfony


    【解决方案1】:

    由于某种原因,在 puppet 配置期间安装了 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 文件中,问题就消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-28
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      相关资源
      最近更新 更多