2017-11-23 19 views
0

나는 PHP Laravel5 프로젝트를 가지고 있습니다. 나는 다음과 같은 컨트롤러의 행동에 file_get_contents()를 사용원격 클라이언트 및 SSL에서 file_get_contents

$production = json_decode(file_get_contents(url('/operation/get-production/'.$job->id)))->production; 

위의 경로가 인증 및 권한 부여 및 로컬 호스트에서 작품 아니라 위의 코드 라인에서 제외됩니다. 인터넷에서 원격 사용자가 해당 코드를 사용하는 경우에는, 다음과 같은 오류가 발생합니다 : 나는 IIS를 사용하지 않는

enter image description here

, 서버는 아파치가 우분투 리눅스에 있습니다. 이 경우 SSL이 나타나는 이유를 알 수 없습니까? 나는 기능에 공급되는 URL이 있음을 확신 http://...하지 https://...

+1

정지되는 _ "확신"_ , 및 _ 실제로 확인하십시오. 또한 원격 서버가 HTTP 요청을 HTTPS로 재전송했는지 확인하십시오. – CBroe

+0

@CBroe 오류의 스크린 샷을 업데이트했습니다. 다시 체크 아웃하십시오. – SaidbakR

답변

0

그것은이 그것을 확인하는 루트 인증서의 참조 파일이 없기 때문에 인증서 확인이 실패처럼 들린다. this Stack Overflow answer을 참조하십시오.

+0

인증서 확인과 'https'없이 서버에 액세스하는 것은 어떤 관계가 있습니까? – SaidbakR

+0

특정 프로토콜을 지정하는 것처럼 보이지 않습니다. 'url' 함수의 기본값은 https이거나, 원격 URL은 https로 리디렉션 될 수 있습니다. 더 많은 정보가 없으면 알 수있는 방법이 없습니다. 어쨌든, https는 어딘가에 관련되어 있습니다. – starbeamrainbowlabs

1

프로덕션 URL이 https를 사용해야 할 수도 있습니다 (좋은 점입니다).

file_get_contents()는 https를 통해 데이터를 가져 오는 완벽한 선택이 아니지만 php_openssl 확장이 활성화되고 allow_url_fopen이 "설정"되어 있으면 https에서 콘텐츠를 가져올 수 있습니다. 유효한 SSL 인증서가없는 것으로

: 당신이를

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 

(신뢰하는 경우 :이와 장애인 SSL 오류를 수있는 PHP 컬을 사용하는 것은 좋은 생각 (http://php.net/manual/fr/book.curl.php)해야합니다 도메인이없는 경우 아파치를 사용하는 경우

가능한 대답 # 1, 당신의 conf을 확인하고 참조 : URL : 당신이 할 수있는, 당신은이 가능한 상황이

+0

질문에 스크린 샷을 업데이트했습니다. 결제 해주세요. – SaidbakR

+0

수동으로 URL (http)로 이동하면 https로 리디렉션됩니까? stacktrace에 307 응답 코드 (임시 리디렉션을 의미 함)가 있음을 확인했습니다. 그렇기 때문에 HTTP를 요청하면 서버가 https로 리디렉션하고 SSL 인증서가 유효하지 않기 때문에 실패했습니다 (자체 서명 인증서 일 수 있음). 모든 경우 : file_get_content 대신 curl을 사용하고 SSL 오류를 피하기 위해 플래그를 넣으십시오. – Bacteries

+0

http에서 직접 일반 액세스가 리디렉션되지 않습니다. – SaidbakR

0

) 외부 웹 사이트로이 작업을 수행하지 모든 통화가 SSL을 사용하도록 강제

  • 또는 -

가능한 대답 # 당신이 당신의 GET URL의 흐름을 만들고 다른 서버에 헤더를 보낼 필요가 2 :

<?php //Create a flow 
$opt = array(
'http'=>array(
'method'=>'GET', 
'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3', 
'header'=>'Accept-language: en\r\n' . 
       'Cookie: foo=bar\r\n’)); 
$context = stream_context_create($opt); 
//Get external url response 
$file = file_get_contents('http://www.example.com/some_file', false, $context); ?>