重写php代码以避免打开流失败:HTTP请求失败

重写php代码以避免打开流失败:HTTP请求失败,php,Php,我一直在寻找关于如何修复php代码中常见错误的正确答案:无法打开流:HTTP请求失败我真的认为解决方案在于重写代码以绕过代码中的用户代理http头。我需要访问的文件与此代码位于同一服务器上。我需要有关如何重写此脚本的函数部分的帮助: function runapp($dir,$latdeg,$latmin,$latsec,$longdeg,$longmin,$longsec) { global $_english; $query= ($_english ? 'http://es

我一直在寻找关于如何修复php代码中常见错误的正确答案:
无法打开流:HTTP请求失败
我真的认为解决方案在于重写代码以绕过代码中的
用户代理
http头。我需要访问的文件与此代码位于同一服务器上。我需要有关如何重写此脚本的函数部分的帮助:

function runapp($dir,$latdeg,$latmin,$latsec,$longdeg,$longmin,$longsec)
{
    global $_english;

    $query= ($_english ? 'http://esnig.org/cgi-bin/ntv2_geo2_e.cgi' : 'http://esnig.org/cgi-bin/ntv2_geo2_f.cgi').
        '?' . PAR_DIR     .'=' . $dir .
        '&' . PAR_LATDEG  .'=' . $latdeg .
        '&' . PAR_LATMIN  .'=' . $latmin .
        '&' . PAR_LATSEC  .'=' . $latsec .
        '&' . PAR_LONGDEG .'=' . $longdeg .
        '&' . PAR_LONGMIN .'=' . $longmin .
        '&' . PAR_LONGSEC .'=' . $longsec;


    $response=file($query); 

    foreach ($response as $value)
    {
        echo $value;
    }
}
?>

从文件获取内容手册页面:

注意:如果要打开带有特殊字符(如空格)的URI, 您需要使用urlencode()对URI进行编码

因此,请尝试在之前对查询参数进行URL编码。
此外,我建议使用从internet url获取文档,当我请求这些url时,会得到403禁止响应。是吗

如果不是,则似乎没有测试runapp()函数params是否具有非空值。它们可能是空字符串。如果您使用一些空值执行请求,会发生什么情况?您将获得格式错误的查询参数

简而言之:你应该检查你的参数的长度或长度!空或一些类似的值,并且仅在设置了它们时才将它们附加到查询字符串中