2015-01-30 2 views
0

내가 두 가지 시나리오가 있습니다 개발 (창) 하나와 생산을위한 또 다른 (유닉스) 윈도우에서정의되지 않은 오프셋 : 1은 http : //mysite_url/../Java.inc를 줄에 1067

개발 ENV를 : jasper 보고서를 호출하기 위해 javabridge를 설치 한 Apache Tomcat 서버를 호출하는 Apache 웹 서버가 있습니다. (모든 것이 localhost에있다.) 모든 것이 잘 동작한다.

CentOS의 프로덕션 환경 : jasper 리포트를 호출하기 위해 javabridge가 다른 tomcat 서버 (Java가 설치되어 있음)를 호출하는 아파치 웹 서버가 있습니다. (다음은 내가 오류 얻을 경우) 톰캣 서버에서

을 나는 Javabridge 기능과 예제를 실행할 수 있지만 아파치 웹 서버에서 그들을 호출 할 때 내가이 오류

Undefined offset: 1 in http://mysite_url/../Java.inc on line 1067 Fatal error: unknown error: please see back end log for details in http://mysite_url/Java.inc on line 869 

을 얻고있다

실패 나는이 코드를 실행하려고 :

<?php 

    //Parametro en caso de que el reporte no este parametrizado 
    $Parametro = new java('java.util.HashMap'); 
    ?> 

바람둥이 서버 Java.inc 파일의 정확한 코드입니다 (행 1067)

function parseHeaders() { 
$this->headers=array(); 
$line=trim(fgets($this->socket,JAVA_RECV_SIZE)); 
$ar=explode (" ",$line); 
$code=((int)$ar[1]); // LINE NUMBER 1067 
if ($code !=200) $this->headers["http_error"]=$code; 
while (($str=trim(fgets($this->socket,JAVA_RECV_SIZE)))) { 
if($str[0]=='X') { 
if(!strncasecmp("X_JAVABRIDGE_REDIRECT",$str,21)) { 
$this->headers["redirect"]=trim(substr($str,22)); 
} else if(!strncasecmp("X_JAVABRIDGE_CONTEXT",$str,20)) { 
$this->headers["context"]=trim(substr($str,21)); 
} 

그리고 Java.inc의 다른 라인은 (867) :

function dieWithBrokenConnection($msg) { 
unset($this->protocol->client->protocol); 
trigger_error ($msg?$msg:"unknown error: please see back end log for details",E_USER_ERROR); 
} 

UPDATE 나는 개발 ENV에서 링크를 호출 할 때이 생성 된 헤더입니다 :

array(3) { [0]=> string(8) "HTTP/1.1" [1]=> string(3) "200" [2]=> string(2) "OK" } 

프로덕션 환경에서 호출하면 헤더가 비어 있습니다.

array(1) { [0]=> string(0) "" } 

무엇이 문제 일 수 있습니까? 서버에 응답 헤더 등을 가져 오는 옵션이 있습니까?

+1

SO 정책에 따라 링크하는 대신 질문 자체에 코드를 포함하십시오. http://stackoverflow.com/help/how-to-ask – Jacinda

+0

로그에 무엇이 표시됩니까? – Shekhar

+0

로그에 아무것도 표시되지 않습니다. 나는 그 질문을 갱신했다. –

답변

0

내 코드는 괜찮 았어. 문제는 내가 공개 IP로 다른 서버에 액세스하려고했기 때문에 방화벽이 어떻게 든 요청의 헤더를 꺼내고 있다는 것이었다.

공용 IP를 동일한 네트워크 로컬 IP로 변경하고 everthing이 작동하기 시작했고 java.inc가 요청의 헤더를 읽기 시작하여 Java.inc 및 JavaProxy.php의 모든 위치에서 네트워크를 설정해야합니다. ip와 tomcats 파일 시스템 변수들.

1

나쁜 영어로 죄송합니다. 나는 같은 문제가 있습니다. 카스퍼 스키 인터넷 시큐리티의 비활성 캣캣 포트 (8080)로이 문제를 해결했습니다. 설정 -> 추가 -> 네트워크로 이동하십시오. 선택 라디오 버튼에서 선택하십시오. 비활성 포트 8080. 정상적으로 잘 돌아갈 수 있습니다.

+0

나를 위해 일했다. 감사!! –

관련 문제