2016-02-02 93 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

相關問題