2016-02-02 89 views
-3

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

$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; 
} 

谢谢! Anders

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

+3

错误日志?错误消息? PHP版本?你没有提供足够的任何人帮助你。 – Kisaragi

+0

当我运行这个时,会产生一些错误。在'if($ stream = fopen($ server,r)){'〜'应该是'r'并且'split'被弃用的情况下,未定义的常量'r' – RamRaider

+1

因此,将结果逐行转储;它在哪里出错?或者使用调试器。 – jeroen

回答

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('@\[email protected]',$distans); 
    $km = $kilometer[0]; 
    $kostnad = $km * ((2.1*1.15)*1.25)/5; 

    echo $kostnad; 
} 

outputs: 
369.495 
+4

也许解释为什么这会起作用? – jeroen

相关问题