未定义的偏移量:第 1067 行 http://mysite_url/../Java.inc 中的 1

Undefined offset: 1 in http://mysite_url/../Java.inc on line 1067

我有两种方案:一种用于开发 (windows),另一种用于生产 (unix)

Windows 中的开发环境: 我有一个 apache 网络服务器,它调用一个安装了 java 桥的 apache tomcat 服务器来调用 jasper 报告。 (一切都在本地主机上)并且一切正常。

CentOs 的生产环境: 我有一个 apache 网络服务器,它通过 javabridge 调用另一个 tomcat 服务器(安装了 java)以调用 jasper 报告。 (这是我得到错误的地方)

在 tomcat 服务器中,我可以执行 Javabridge 函数和示例,但是当我从 apache 网络服务器调用它们时,它失败了

我收到这个错误

 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');
    ?>

tomcat 服务器 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);
}

更新 当我从开发环境调用 link 时,这是生成的 header:

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

当我从生产环境中调用它时,header 是空的

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

可能是什么问题?服务器中是否有任何选项可以删除响应的 header 或类似内容?

我的代码没问题,问题是我试图通过 public ip 访问另一台服务器,所以防火墙以某种方式删除了请求的 header。

解决方案是将 public ip 更改为同一网络本地 ip,一切都开始工作并且 java.inc 开始读取请求的 header 所以每个地方 Java.inc 和 JavaProxy.php 你也必须设置网络 ip 和 tomcats 文件系统变量。

对不起我的英语不好 我有同样的问题.. 我通过卡巴斯基互联网安全软件上的非活动 tomcat 端口 (8080) 解决了这个问题。 转到设置 - >附加 - >网络。 在单选按钮 上选择 select 仅监控 selected。 非活动端口 8080。 没问题,运行 赢了 10。