Php代码在一台服务器上运行但在另一台服务器上运行。为什么?

时间:2016-02-02 14:40:09

标签: php google-maps

我制作了一个使用Google Maps API计算距离的简短代码。我的问题是代码在一台服务器上工作正常,但在另一台服务器上没有。从一个地方复制到另一个地方的是相同的代码。我无法弄清楚什么是错的。 任何人都可以帮助我吗?

$server="https://maps.googleapis.com/maps/api/directions/json?origin=".$from.",Sweden&destination=".$to.",Sweden";
if($stream = fopen( $server,r)){
$klart=json_decode(stream_get_contents($stream),true);
fclose($stream);
$distans = $klart['routes'][0]['legs'][0]['distance'][text];
 $kilometer=split(" ",$distans);
$km = $kilometer[0];
$kostnad = $km * ((2.1*1.15)*1.25)/5;
}

谢谢! 安德斯

编辑1:谢谢大家的意见。它似乎是一个javascript干扰了html格式。我添加了一个脚本来自动完成城市(变量$ to和$ from)。当我注释掉javascript时,php代码工作正常。

1 个答案:

答案 0 :(得分:2)

原谅延迟添加评论,紧急情况出现,我不得不离开。最初,当我运行代码时,除了$from& $to有两个未定义的常量,即rtext

$from='malmo';
$to='stockholm';

$server="https://maps.googleapis.com/maps/api/directions/json?origin=".$from.",Sweden&destination=".$to.",Sweden";

/* the mode `r` needs to be quoted */
if($stream = fopen( $server,'r')){

    $klart=json_decode(stream_get_contents($stream),true);
    fclose($stream);
    /* the field `text` also needs to be quoted - unless it really is a constant defined elsewhere */

    $distans = $klart['routes'][0]['legs'][0]['distance']['text'];
    /* as `split` is now deprecated, use preg_split & split string on a space `\s` */
    $kilometer=preg_split('@\s@',$distans);
    $km = $kilometer[0];
    $kostnad = $km * ((2.1*1.15)*1.25)/5;

    echo $kostnad;
}

outputs:
369.495