Symfony 3-不允许访问app_dev.php

Symfony 3-不允许访问app_dev.php,php,symfony,shared-hosting,symfony-3.1,Php,Symfony,Shared Hosting,Symfony 3.1,我刚刚买了一些共享主机(OVH.com-php5.6.21)来托管一个symfony3项目(版本3.1.3) 在服务器上上传Symfony的config.php文件时,它只显示2条建议消息以提高站点速度,但没有任何可能阻止站点工作的内容。因此,托管似乎足够好,可以正常运行此项目 我发送了服务器上的所有文件和文件夹,但当我尝试访问app_dev.php页面时,我收到以下错误消息: You are not allowed to access this file. Check app_dev.php

我刚刚买了一些共享主机(OVH.com-php5.6.21)来托管一个symfony3项目(版本3.1.3)

在服务器上上传Symfony的config.php文件时,它只显示2条建议消息以提高站点速度,但没有任何可能阻止站点工作的内容。因此,托管似乎足够好,可以正常运行此项目

我发送了服务器上的所有文件和文件夹,但当我尝试访问app_dev.php页面时,我收到以下错误消息:

You are not allowed to access this file. Check app_dev.php for more information.
我知道我必须将我的IP地址添加到app_dev.php文件中允许的IP数组中,因此我做了如下操作(XXX.XXX.XXX.XXX是我的IP地址):

我尝试了不同的方法来找出问题的根源:

  • 拆下!(在_数组中)条件的部分=>错误500
  • 删除整个条件块=>我可以到达站点(即使仍然存在一些与MySQL相关的错误)
var/logs/dev.log文件完全为空,即使权限为777

如果你知道这个问题可能来自哪里,如果你能帮助我,我将很高兴

提前感谢您的帮助


PS:当我尝试访问prod环境(app.php)时,我得到一个错误500,但是var/logs/prod.log文件包含关于MySQL错误的行。。。所以我想这很好。

阅读代码时,您完全知道问题所在:)或者至少,这可能是两个原因之一:

  • 您的请求包含一个
    客户端IP
    X-Forwarded-For
    头,可以通过在您的网站之前安装的反向代理(如Varnish)进行设置
  • 您没有配置正确的IP地址

不管实际原因如何,建议不要打开生产服务器上的app_dev.php前端控制器。开发应该在本地机器上完成。篡改此检查可能会意外地将开发环境对外开放。

对于初学者;转储if条件的每个部分以查看失败的地方,或者一次尝试一个条件谢谢。问题似乎来自
$\u服务器['HTTP\u X\u FORWARDED\u']
条件。我不确定如果我删除它会有什么后果。即使@Gerry给出了答案,你在PROD中还是会出现500个错误吗?上面的配置看起来允许开发人员访问是正确的。谢谢,没有更多的错误,现在一切正常(但我仍然无法访问开发人员,因为HTTP_X_FORWARDED_for condition),我知道我不应该在生产中使用app_DEV.php,但这是我第一次尝试将Symfony项目放在prod中。在我的本地机器中,一切都正常工作,所以我想确保在远程机器中也是一样的。问题似乎来自
$\u服务器['HTTP\u X\u FORWARDED\u']
条件。如果我删除它,不确定后果。如果有代理(似乎是这样),远程地址通常包含代理服务器的IP地址,而不是您自己的公共IP地址。为什么要在生产环境中使用dev环境?我只是想确保生产环境中的一切都像我的本地机器:在prod和dev环境中工作。
if (isset($_SERVER['HTTP_CLIENT_IP'])
    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
    || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', 'XXX.XXX.XXX.XXX', 'fe80::1', '::1']) || php_sapi_name() === 'cli-server')
) {
    header('HTTP/1.0 403 Forbidden');
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}