代码之家  ›  专栏  ›  技术社区  ›  Dimitrios Desyllas

使用homestead vagrant解决方案访问symfony的app_dev.php

  •  0
  • Dimitrios Desyllas  · 技术社区  · 7 年前

    我把宅基地设置为 documentation 状态并执行以下更改 Homestead.yaml 为了处理我的项目:

    ip: 192.168.10.10
    memory: 2048
    cpus: 1
    provider: virtualbox
    authorize: ~/.ssh/id_rsa.pub
    keys:
        - ~/.ssh/id_rsa
    folders:
        -
            map: /home/pcmagas/Kwdikas/php/apps/ellakcy_member_app/
            to: /home/vagrant/code
    sites:
        -
            map: homestead.test
            to: /home/vagrant/code/web
            type: symfony
    
    databases:
        - homestead
    name: ellakcy-member-app
    hostname: ellakcy-member-app
    

    但是当我通过浏览器访问时 http://192.168.10.10/ 我得到以下错误:

    不允许您访问此文件。有关详细信息,请查看app_dev.php。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Dimitrios Desyllas    7 年前

    在app_dev.php中,有以下代码片段:

    if (isset($_SERVER['HTTP_CLIENT_IP'])
        || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
        || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'], true) || PHP_SAPI === 'cli-server')
    ) {
        header('HTTP/1.0 403 Forbidden');
        exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
    }
    

    这意味着 app_dev.php 脚本不识别正在访问的IP,因此为了防止开发过程中的任何授权访问,它会阻止加载symfony。

    为了绕过此保护,您应该找出在Vagrant虚拟网络上哪个是客户机的IP,快速而肮脏的方法是用以下代码片段替换上面的代码片段:

    if (isset($_SERVER['HTTP_CLIENT_IP'])
        || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
        || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'], true) || PHP_SAPI === 'cli-server')
    ) {
        header('HTTP/1.0 403 Forbidden');
        echo 'REMOTE_ADDR: '.$_SERVER['REMOTE_ADDR']."<br>";
        exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
    }
    

    如您所见,它打印了玩具应在数组中放置的正确值:

    !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'/*, Found Ip goes there*/], true)
    

    在我的情况下是 192.168.10.1 一,我想在你的案子里也应该是这样。