2012-05-01 3 views
0

네, 두 개의 Linux 박스가 프록시 서버 뒤에 있습니다. AI 박스에서 RHEL 6/PHP 5.3.3RHEL 6에서 PHP file_get_contents() 문제

- 페도 코어 (12)/PHP 5.3.1

박스 B - 두 상자는 포트 (801)

박스를 연결하여 필터를 우회 설정 file_get_contents()를 사용하여 외부 사이트에 연결할 수 있습니다.

<?php 
$opts = array(
       'http' => array(
           'proxy' => 'tcp://10.136.132.1:801', 
           'request_fulluri' => true 
          ) 
      ); 

$cxContext = stream_context_set_default($opts); 
echo file_get_contents("http://www.google.com"); 

이렇게하면 Google 홈페이지가 표시됩니다. 박스 B에

나는 같은 코드를 실행하지만,이 오류가 발생합니다 :

Warning: file_get_contents(http://www.google.com): failed to open stream: Permission denied 

두 상자는 동일한 네트워크에 같은 프록시 서버 뒤에 있습니다. 박스 B에서 file_get_contents를 사용할 수 있도록 Apache 또는 PHP에서 누락 된 설정이 있습니까?

+0

무엇을 인 print_r 않습니다 ($ http_response_header) 당신이 말해? –

+0

On Box B $ http_response_header는 정의되지 않은 변수입니다. On Box A에서는 배열에 헤더 정보를 생성했습니다. 이 기능을 사용하려면 무언가가 켜져 야합니까? – amburnside

+0

응답 헤더가 4xx 오류를 나타내는 경우 PHP 문제가 아닐 수도 있습니다. –

답변

2

b를 상자에 다른 웹 사이트를 열어보십시오. 루트로 쉘에서 이것을 실행 해보십시오 : SELinux는 논리 값에

setsebool -P httpd_can_network_connect on 

더 많은 정보는 여기에서 찾을 수 있습니다 : http://wiki.centos.org/TipsAndTricks/SelinuxBooleans

+0

그게 효과가 있습니다. SELinux가 정말로 문제였습니다. 도와 주셔서 감사합니다 Kaivosukeltaja. 매우 감사! – amburnside

0

Google이 봇 또는 스크립트에서 보낸 요청을 차단하기 때문일 수 있습니다. 상자 A가 Google에 요청할 때 추가 헤더를 설정하기 때문일 수 있습니다.

는 SELinux를 기본적으로 아파치, 차단 나가는 연결을 사용하도록 설정 한 것 소리

+0

모든 도메인에서 동일합니다. – amburnside