2011-08-14 2 views
0

Curl 또는 file_get_contents를 사용하여 원격 데이터에 액세스하려고하지만 둘 다 404를 찾을 수 없음을 반환합니다. 브라우저와 다른 서버에서 동일한 링크가 작동합니다. 아마 뭔가 PHP 구성에서 사용할 수 없습니까?404 찾을 수 없음 PHP

여기 컬과 같은 기능입니다 얻을 내용을 파일 :

public function getNowPlaying() { 

    $source = "http://v12.radionsm.lv/lv/stats";//$this->url . "/lv/stats"; 

    $ch = curl_init($source); 
    curl_setopt($ch, CURLOPT_USERAGENT, $this->useragent); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    if (curl_exec($ch) === FALSE) { 
     die("Curl error: " . curl_error($ch)); 
    } 
    $data = curl_exec($ch); 
    curl_close($ch); 
    $xml = simplexml_load_string($data); 

    $data = array(
     'status' => (string) $xml->status, 
     'onAir' => (string) $xml->dj_name, 
     'artist' => (string) $xml->artist_name, 
     'title' => (string) $xml->song_name, 
     'albumArt' => (string) $this->medium($xml->song_pic) 
    ); 

    return $data; 
    } 

    public function getNowPlaying() { 

     $source = "http://v12.radionsm.lv/lv/stats"; 
     echo file_get_contents($source); 


    } 

감사합니다.

+0

운영 체제 란 무엇입니까? – Nickool

+0

명령 줄에서 wget 또는 curl을 사용하여이 URL을 얻으려고 했습니까? 아마도이 문제는 PHP 코드를 실행중인 시스템의 DNS입니다. –

+0

유닉스이지만 배포판을 말할 수는 없습니다. 그리고 나는 콘솔에 접근 할 수 없다. – Raimonds

답변

3

나는 이것이 자동 스크래핑으로부터 어떤 종류의 보호라고 생각한다. 따라서 해당 페이지를 읽으려면 브라우저 동작을 반복해야합니다.

유효한 홈페이지 URL을 사용하여 CURLOPT_REFERER를 설정하십시오. 브라우저에서 보낸 curl 요청에 모두 헤더를 보내야합니다.

+0

개인 $ useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv : 1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"; 하지만 리퍼러를 시도 할 것입니다 ( – Raimonds

+0

여전히 404를 반환하고 다른 adreses와 작동한다고 언급하는 것을 잊어 버렸습니다. Google 및 기타를 반환하지만 그렇지 않습니다.) – Raimonds

+0

@Raimonds : 개발 중에 –