Php 在symfony中找不到404
我需要一个测试功能,但它不工作。应该与路由+控制器一起工作,但我没有找到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="
/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