file_get_contents 在 Yii 小部件的视图中不工作

file_get_contents not working in Yii widget's view

我有 Yii 1.1 和一个带视图的小部件,我在其中调用 file_get_contents php 外部地址函数(来自 https 的 https)。我打电话给 https://api.ipinfodb.com/v3/ip-city/... - 他们通过 IP 地址提供坐标。它因 503 错误而失败:

failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable

但它在静态视图页面上完美运行。 它也适用于我的开发机器上的任何地方。 我在服务器上的 php.ini 中有 allow_url_fopen = On

有什么问题吗?

这会解决问题吗(我不确定您的 URL 是否使用了特殊字符...)?

file_get_contents(urlencode('https://api.ipinfodb.com/v3/ip-city/...'));

或者,如果您启用了 curl,您可以使用这样的东西:

function getData($url){

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);  
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 3);     
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    $data = curl_exec($ch);
    curl_close($ch);

    return $data;
    }