2017-06-23 176 views
0

只是想知道是否有一個設置,我在我的curl命令,這是防止數據回來作爲json字符串,而是將它作爲數組返回。在php中執行curl cmd應返回json,但返回數組

$cmd='curl -d @/home/wazilly/public_html/recipe.json -H "Content-Type: 
application/json" "https://api.edamam.com/api/nutrition-details? 
app_id=XXXXX&app_key=97d3b48d3a8366572c8012a142e28f50"'; 
exec($cmd,$result); 
echo $result; //prints Array 

回答

0

按照documentationexec始終把數組作爲其第二個參數,它與所執行的命令的輸出的所有行填充。

雖然我不確定你的命令的輸出是什麼樣的。你最好在$result上做一個var_dump()以確定。但既然你正在處理捲曲,爲什麼不簡單地使用PHP curl extension

+0

啊是啊,我轉換它的PHP捲曲,並得到服務器的問題 –

+0

$ ch = curl_init(); curl_setopt($ ch,CURLOPT_URL,「https://api.edamam.com/api/nutrition-details?app_id=XXXX&app_key=97d3b48d3a8366572c8012a142e28f50'」); curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1); $ post = array( 「file」=>「@」.realpath(「/ home/wazilly/public_html/recipe.json」) ); curl_setopt($ ch,CURLOPT_POSTFIELDS,$ post); curl_setopt($ ch,CURLOPT_POST,1); $ headers = array(); $ headers [] =「Content-Type:application/json」; curl_setopt($ ch,CURLOPT_HTTPHEADER,$ headers); $ result = curl_exec($ ch); (curl_errno($ ch)){ echo'錯誤:'。 curl_error($ CH); } curl_close($ ch); –

+0

數組作爲第二個參數我需要看文檔謝謝 –

0

檢查原型EXEC()在PHP manual

string exec (string $command [, array &$output [, int &$return_var ]]) 

PHP返回一個數組。如果你想的原始輸出,而不是,我認爲實際上可能是JSON,試試這個:

$result = shell_exec($cmd); 
echo $result; 
+0

去試試這個謝謝 –

+1

沒有display_errors =在php.ini中設置所以有一個錯誤,我沒有看到。一旦我解決了錯誤shell_exec($ cmd)運行正常,並返回字符串$結果。謝謝。很高興知道exec($ cmd,$ output)以數組的形式返回輸出。 –

0

我建議你轉換爲使用$結果陣列以JSON格式json_encode(array())

echo json_encode($result); 
+0

耶def。我剛掛上了curl command exec。奇怪的是,我仍然不確定爲什麼我使用的PHP捲曲庫代碼返回了apache的錯誤...我聯繫了edamam.com,但是您必須支付技術幫助,因此可能沒有骰子...這是代碼。說服務器無法處理請求或什麼。 –

+0

$ ch = curl_init(); curl_setopt($ ch,CURLOPT_URL,「api.edamam.com/api/...); curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1); $ post = array(」file「=>」@「.realpath(」/ home/wazilly /public_html/recipe.json「)); curl_setopt($ ch,CURLOPT_POSTFIELDS,$ post); curl_setopt($ ch,CURLOPT_POST,1); $ headers = array(); $ headers [] =」Content-Type:application/($ ch); curl_close($ ch); $ result = curl_exec ; –