在控制器中调用操作时会出现一个奇怪的问题。
在具有app_dev.php
- 前缀的开发模式中,一切都按预期工作。但在生产模式下,操作将返回404
。
操作开头的echo "test"; exit;
仍然会产生404,因此操作完全被忽略。
但是app/console debug:router --env=prod
以及app/console debug:router --env=dev
正在正确显示路线。
在两种环境中:
+--------------+---------------------------------------------------------+
| Property | Value |
+--------------+---------------------------------------------------------+
| Route Name | blabla_trackfile_index |
| Path | /trackfile/{id}.{ext} |
| Path Regex | #^/trackfile/(?P<id>[^/\.]++)\.(?P<ext>[^/]++)$#s |
| Host | ANY |
| Host Regex | |
| Scheme | ANY |
| Method | ANY |
| Requirements | NO CUSTOM |
| Class | Symfony\Component\Routing\Route |
| Defaults | _controller: PumukitBasePlayerBundle:TrackFile:index |
| Options | compiler_class: Symfony\Component\Routing\RouteCompiler |
+--------------+---------------------------------------------------------+
我已经使用控制台清除了缓存
php app/console cache:clear
php app/console cache:clear --env=prod
并手动(删除文件夹)。
我已将src / app.php中的$kernel = new AppKernel('prod', false);
更改为$kernel = new AppKernel('dev', true);
,但问题仍然存在于生产模式中。
更新
在prod.log
中没有条目。
Nginx日志:
2017/07/06 10:19:29 [error] 1517#0: *159 open() "/var/www/test/web/trackfile/594b97d1e1db06824d8b4567.mp4" failed (2: No such file or directory), client: XX.XX.XX.XX, server: localhost, request: "GET /trackfile/594b97d1e1db06824d8$
所以看起来nginx将请求的路由视为文件或目录。这是问题吗?我该如何解决这个问题?
更新2
/**
* @Route("/trackfile/{id}.{ext}", name="blabla_trackfile_index" )
*/
public function indexAction($id, Request $request)
{
echo "asdf"; exit;
}
我可以遵循的任何其他想法或提示?