Php 在symfony中找不到404

Php 在symfony中找不到404,php,symfony,Php,Symfony,我需要一个测试功能,但它不工作。应该与路由+控制器一起工作,但我没有找到404 这是我的/app/config/routing.yml: AndroidAPIBundle: resource: "@MDPIAndroidApiBundle/Controller/" type: annotation prefix: / 在Controller目录中,我有LoginController.php: /** * @Route("/api/test", name="

我需要一个测试功能,但它不工作。应该与路由+控制器一起工作,但我没有找到404

这是我的
/app/config/routing.yml

AndroidAPIBundle:
    resource: "@MDPIAndroidApiBundle/Controller/"
    type:     annotation
    prefix:   /
Controller
目录中,我有
LoginController.php

/**
 * @Route("/api/test", name="test")
 */
public function getAction(Request $request)
{
    $format = "json";
    $view = View::create()->setStatusCode(201)->setData(array("status"=>"OK", "data"=>array("test" => "DAN TEST")))->setFormat($format);
    return $this->get('fos_rest.view_handler')->handle($view);
}
那么,为什么当我发出卷曲请求时会收到404消息呢?也可以在浏览器中将
/api/test
添加到我的本地url

编辑

php app/console router:debug

test                                         ANY    ANY    ANY  /api/test
编辑2

/etc/nginx/sites available/susy\u android\u final

server {
    listen                  80;
    server_name             susy.android.final.local;
    access_log              /var/log/nginx/susy_android_final.access.log;
    error_log               /var/log/nginx/susy_android_final.error.log;
    root                    /var/www/susy.mdpi.com.final/web;

    client_max_body_size 500M;
    large_client_header_buffers 8 64k; 

    location / {
            index app_dev.php;
            if (-f $request_filename) {
            break;
            }
            rewrite ^(.*)$ /app_dev.php last;
    }
    ## Parse all .php file in the /var/www directory
   location ~ (app|app_dev|app_eudev).php {
            fastcgi_split_path_info         ^(.+\.php)(.*)$;                
            fastcgi_pass                    unix:/var/run/php/php5.6-fpm.sock; 
            #fastcgi_pass                   127.0.0.1:9001; 
            #fastcgi_index                  index.php;
            fastcgi_param                   SCRIPT_FILENAME  $request_filename;
            include                         fastcgi_params;

   }


}
/etc/hosts

127.0.0.1 susy.android.final.local

这是在ubuntu中的

我想你已经正确配置了你的symfony,但是你的浏览器和symfony之间的一些东西坏了。 我建议为您的配置编写一个功能测试

如果您的测试成功,那么您的配置就一切正常。然后,您应该查看是否在正确的web服务器上登录,并为symfony配置web服务器(通常根目录应位于web文件夹中)

确保您的域对Windows可见 调试此问题的第一步是确保Windows了解什么是
www.yourdomain.com
,以及它的位置。为此,您需要修改Windows的
hosts
文件,该文件应位于
C:\Windows\System32\drivers\etc\
文件夹中。我个人喜欢在我的桌面上为该文件创建一个快捷方式,以便在需要时更容易找到它。在Notepad++(或任何您喜欢的文本编辑器)中打开文件,转到文件末尾,并添加以下行:

# replace with your VM's IP address
255.255.255.0 www.yourdomain.com
如果愿意,您可以继续添加域,只需确保在VM上定义了相应的域。还要确保你的虚拟机有一个静态IP地址,指南是相当完整的

注意,只有在使用自定义域时,才需要此步骤。如果您使用
http://localhost:8080/
,这应该不是问题

在Nginx配置中注册站点 如果使用Symfony的内置命令创建项目,则不需要此步骤。不过,检查一下也无妨。确保域名与前面描述的
hosts
文件中的域名相对应,并且根目录定义正确,如下所示:

server {
    server_name yourdomain.tld www.yourdomain.tld;
    root /var/www/yourproject/web; # this is where app.php is located
您可以找到有关最小Nginx设置的更多信息

检查防火墙设置 那么你已经完成了上面的所有步骤,但仍然不起作用,现在呢?也许Windows只是在阻止对VM的请求,在这种情况下,您需要进入Windows防火墙并允许设置


我认为这不是问题的根源,因为您显然从nginx收到了一条错误消息,这意味着请求确实到达了您的服务器。不过,我认为了解其他人可能会很有趣。

您是否尝试运行以下命令

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

由于将.htaccess规则移动到虚拟主机配置文件中,您的
web
目录中似乎有
.htaccess
,请删除.htaccess文件的内容并重试

当您访问域/api/test时,您有什么?当您键入以下命令时,是否可以检查您的控制台中是否显示了路由:
php-bin/console-debug:router
It可能
php-app/console-debug:router
如果您使用的是旧版本的symfony,当我访问我的域时,我得到了
404-notfound-nginx/1.10.3(Ubuntu)
[InvalidArgumentException]命令“调试:路由器”未定义。您使用的是哪个版本的Symfony?Symfony版本2.3.42-app/dev/debugcd到您的项目根目录,键入此命令
php-app/console-debug:router
,并向我们显示您将获得的结果。感谢您的回答,my-hosts-ile正常,它将重定向到本地主机,并且站点已在sites availa中注册我会更新的question@DanWearsPrada我刚刚检查了您的编辑,您的主机文件应该包含您的虚拟机的IP地址,而不是
127.0.0.1
,这是您窗口的“主”地址。htaccess nad仍然相同:(对于产品,我获取
[InvalidArgumentException]文件“/var/www/susy.mdpi.com.final/app/config/config_prod.yml”不存在。
对于dev
[Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]没有扩展能够加载“web_profiler”的配置(在/var/www/susy.mdpi.com.final/app/config/config_dev.yml中)。已查找命名空间“web_profiler”“…
文件是否存在以及对该文件的权限:
/var/www/susy.mdpi.com.final/app/config/config_prod.yml
抱歉,我没有bin/console,只有app/console。不确定此帮助是否相同,它在以后的Symfony版本中从一个应用移动到另一个bin
php bin/console cache:clear --env=prod