在一个现有的Symfony项目中,该项目在PHPUnit中具有可运行的测试,我从使用Browser-Kit切换到Panther(以解决有关JavaScript的测试缺点)。
首先,将测试迁移到Panther似乎很简单。但是后来我无法通过Web应用程序管理面板的测试。对任何路由/admin/*
的所有请求均返回非常“ phpinfo()-/ apache-feely”的404响应:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>404 Not Found</title><style>
body { background-color: #fcfcfc; color: #333333; margin: 0; padding:0; }
h1 { font-size: 1.5em; font-weight: normal; background-color: #9999cc; min-height:2em; line-height:2em; border-bottom: 1px inset black; margin: 0; }
h1, p { padding-left: 10px; }
code.url { background-color: #eeeeee; font-family:monospace; padding:0 2px;}
</style>
</head><body><h1>Not Found</h1><p>The requested resource <code class="url">/admin/company/new</code> was not found on this server.</p></body></html>
其他不存在的路由返回常规的symfony异常/错误调试页面。
如果我将管理控制器映射到其他路由(例如/administration/*
),则会得到预期/正确的响应。
此外,我无法在PHPUnit / Panther管道之外重现该问题,可以这么说:如果我(启用并)在测试环境中运行内部服务器(symfony / web-server-bundle),则会收到在/admin/*
路由上也预期/正确的响应。
如果我将PHPUnit / Panther设置为使用其他端口,则问题仍然存在。
我不知道PHPUnit / Panther使用哪个服务器实例(也是因为在错误的404响应中不明显),但是似乎该服务器实例专门拦截了{{1 }}路由到symfony网络应用程序范围之外,以响应404。
有人知道PHPUnit / Panther幕后正在启动什么服务器实例吗,甚至我可以在哪里禁用错误拦截的路由?
OS: Ubuntu 18.04 PHP: 7.2.24-0ubuntu0.18.04.1 Symfony: 4.4 PHPUnit: 7.5
答案 0 :(得分:0)
Panther 使用稍微不同的参数/设置启动 PHP 调试服务器,这不允许与 public
目录中的文件夹同名的路由共存。 symfony 集成的 web 服务器和生产服务器(apache 和 nginx)很高兴地为这种重叠的路由提供服务,映射到公共文件夹中的控制器和资源。
参见 Panther 问题 #491。