在一台服务器上工作但在另一台服务器上不起作用的 PHP 代码.为什么


Php-code that works on one server but not on another. Why?

我做了一个简短的代码来使用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:谢谢大家的评论。似乎是一个干扰了html表单的javascript。我添加了一个脚本来自动完成城市(变量$to和$from)。当我注释掉javascript时,php代码工作正常。

请原谅添加评论的延迟,出现了一些紧急的事情,我不得不离开。最初,当我运行代码时,抛出了几个错误 - 除了缺乏$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