Symfony2 路由在生产环境中不起作用

Symfony2 routing not working in production environment

我正在尝试访问一个 POST 路由,该路由目前在本地工作,但一旦部署到生产服务器就无法工作。我已经删除了应用程序的名称,并在下面替换为 XXX。我 运行 没有想法,我想我已经尝试了这里发布的所有内容。

我们有一个非常相似的 POST 唯一路由,它工作正常,但来自以前的部署。

我正在尝试访问路线 www.XXX。com/api/convert_mov

我的routing.yml

XXX_api_convert:
    path:     /api/convert_mov
    defaults: { _controller: XXXPartnerBundle:API:convert }
    methods:  [POST]

php app/console router:debug | grep api returns

XXX_api_convert POST     ANY    ANY  /api/convert_mov

我有运行

php app/console cache:clear --env=prod

app/logs/prod.log 显示

request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "POST /api/convert_mov"" at /var/www/XXX/ppp/releases/20150903102317/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php line 144 {"exception":"[object] (Symfony\Component\HttpKernel\Exception\NotFoundHttpException(code: 0): No route found for \"POST /api/convert_mov\" at /var/www/XXX/ppp/releases/20150903102317/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php:144, Symfony\Component\Routing\Exception\ResourceNotFoundException(code: 0): at /var/www/XXX/ppp/releases/20150903102317/app/cache/prod/appProdUrlMatcher.php:738)"} []

即使在预热缓存之后,我也可以在 appProdUrlMatcher.php

中看到它
// XXX_api_convert
                if ($pathinfo === '/api/convert_mov') {
                    if ($this->context->getMethod() != 'POST') {
                        $allow[] = 'POST';
                        goto not_XXX_api_convert;
                    }

                    return array (  '_controller' => 'XXX\PartnerBundle\Controller\APIController::convertAction',  '_route' => 'XXX_api_convert',);
                }
                not_XXX_api_convert:

            }

我设法用不同的部署脚本解决了这个问题。新脚本在服务器上执行了一些额外的任务,包括重新启动 PHP,这可能就是答案。

Clearing the cache for the prod environment with debug false
Stopping php-fpm-5.5:                                      [  OK  ]
Starting php-fpm-5.5:                                      [  OK  ]
Nothing to update - your database is already in sync with the current entity metadata.
Installing assets as hard copies.
Installing assets for Symfony\Bundle\FrameworkBundle into web/bundles/framework
Installing assets for XXX\PartnerBundle into web/bundles/XXXpartner
Installing assets for Sonata\CoreBundle into web/bundles/sonatacore
Installing assets for Sonata\AdminBundle into web/bundles/sonataadmin
Installing assets for FOS\JsRoutingBundle into web/bundles/fosjsrouting
Installing assets for Sensio\Bundle\DistributionBundle into web/bundles/sensiodistribution
Running XXX:migrate
XXX:migrate - done