У меня есть скрипт, который использовал file_get_contents, и из-за того, что allow_url_fopen отключен по соображениям безопасности, я работал над заменой кода на cURL, но он не работает.
Сценарий был ДО:
public function actionReverseGeoCoding()
{
if (isset($this->data['lat']) && !empty($this->data['lng'])){
$latlng=$this->data['lat'].",".$this->data['lng'];
$key=Yii::app()->functions->getOptionAdmin('google_geo_api_key');
$file="https://maps.googleapis.com/maps/api/geocode/json?latlng=$latlng&key=".urlencode($key);
if ($res=file_get_contents($file)){
$res=json_decode($res,true);
if (AddonMobileApp::isArray($res)){
$this->code=1; $this->msg="OK";
$this->details=$res['results'][0]['formatted_address'];
} else $this->msg=$this->t("not available");
} else $this->msg=$this->t("not available");
} else $this->msg=$this->t("missing coordinates");
$this->output();
}
Теперь я изменился на cURL после:
public function actionReverseGeoCoding()
{
if (isset($this->data['lat']) && !empty($this->data['lng'])){
$latlng=$this->data['lat'].",".$this->data['lng'];
$key=Yii::app()->functions->getOptionAdmin('google_geo_api_key');
$file="https://maps.googleapis.com/maps/api/geocode/json?latlng=".$latlng."&sensor=true&key=".urlencode($key);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $file);
//curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data= curl_exec ($ch);
//curl_close ($ch);
//echo $data;
if ($res == $data){
$res=json_decode($res,true);
if (AddonMobileApp::isArray($res)){
$this->code=1; $this->msg="OK";
$this->details=$res['results'][0]['formatted_address'];
} else $this->msg=$this->t("not available");
} else $this->msg=$this->t("not available");
} else $this->msg=$this->t("missing coordinates");
$this->output();
}
Что я сделал не так, чтобы он не работал?
Задача ещё не решена.
Других решений пока нет …