1

很奇怪,我的本地主机上运行了代码,但是当我将它部署在远程服务器上时。它得到了 T_IF 错误。代码如下:

xxx 行是: $experiment['import_result'] = TRUE;

private function do_import($file_info, $ih_id){

    $this->load->library("MY_PHPExcel");
    $inputFileName = $file_info['full_path']; 
    $sheetNames = array('General','Gas', 'Sample', 'Mass Gain', 'Cr'); 

    /**  Identify the type of $inputFileName  **/ 
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName); 
    /**  Create a new Reader of the type that has been identified  **/ 
    $objReader = PHPExcel_IOFactory::createReader($inputFileType); 
    /**  Advise the Reader that we only want to load cell data  **/ 
    $objReader->setReadDataOnly(true);
    /**  Advise the Reader of which WorkSheets we want to load  **/  
    $objReader->setLoadSheetsOnly($sheetNames); 
    /**  Tell the Reader that we want to use the Read Filter  **/  
    //$objReader->setReadFilter($filterSubset);
    /**  Load $inputFileName to a PHPExcel Object  **/ 
    $objPHPExcel = $objReader->load($inputFileName);
    $sheetCount=$objPHPExcel->getSheetCount();

    $experiment = array();
    for($index = 0; $index<$sheetCount; $index++){
        $objPHPExcel->setActiveSheetIndex($index);
        $sheetName = $objPHPExcel->getActiveSheet()->getTitle();
        if($sheetName == 'General'){
            $experiment['general'] = $this->read_general($objPHPExcel, $index, 1);
        }elseif($sheetName == 'Sample'){
            $experiment['sample'] = $this->read_sample($objPHPExcel, $index, 1);
        }elseif($sheetName == 'Gas'){
            $experiment['gas'] = $this->read_gas($objPHPExcel, $index, 1);
        }elseif($sheetName == 'Mass Gain'){
            $experiment['mass'] = $this->read_mass($objPHPExcel, $index, 1);
        }elseif($sheetName == 'Cr'){
            $experiment['cr'] = $this->read_cr($objPHPExcel, $index, 1);
        }
    }


    //if there is format error 
    foreach($experiment as $sheet){
        if(isset($sheet) && !empty($sheet)){
            if(isset($sheet['error']) && !empty($sheet['error'])){
                $experiment['import_result'] = FALSE;
                break 1;
            }elseif(isset($sheet['validation']['validation']) && $sheet['validation']['validation'] == 0){
                $experiment['import_result'] = FALSE;
                break 1;
            }else{
                $experiment['import_result'] = TRUE;
                break 1;
            }
        }
    }

    if($experiment['import_result']){//there is no format error, proceed to import
        //do import into DB
        $import_flag = 0;
        $post_data = $this->input->post();

        if(isset($post_data['import_radio']) && $post_data['import_radio'] == 1){//new 
            $import_flag = $this->m_import->import_experiment_new($experiment, $this->session->userdata('user_id'), $ih_id);
        }elseif(isset($post_data['import_radio']) && $post_data['import_radio'] == 2){//update
            //debug
            //$this->firephp->log('update an existing experiment');
            $import_flag = $this->m_import->import_experiment_update($post_data['import_eid'], $experiment, $this->session->userdata('user_id'), $ih_id);
        }else{//didn't choose a mode
            return array('status'=>4, 'message'=>'Please select "new" or "update".');
        }

        if($import_flag != 0){//import done ok
            if($post_data['import_radio'] == 1){
                return array('status'=>1, 'message'=>'File has been successfully imported, the new experiment ID is '.$import_flag.'.');
            }else{
                return array('status'=>1, 'message'=>'File has been successfully imported, Experiment'.$import_flag.' has been updated.');
            }
        }else{//validation ok, import fail
            return array('status'=>2, 'message'=>'Something went wrong during the process of importing, please try again.');
        }
    }else{
        //return experiment with errors which are to be presented in view
        $return_error = array();
        $return_warning = array();
        foreach($experiment as $name => $sheet){
            if(isset($sheet['validation'])){
                foreach ($sheet['validation']['error'] as $item){
                    array_push($return_error, $item);
                }
                foreach($sheet['validation']['warning'] as $item){
                    array_push($return_warning, $item);
                }
            }
        }
        //if(!empty($temp_interval_match_error)){   array_push($return_error, $temp_interval_match_error); }
        return array('status'=>3, 'message'=>'The file has invalid cells, please correct the file according to the following hints.',
                    'error' => $return_error, 'warning'=>$return_warning);
    }
}//end of fn do_import()

请帮助定位问题。提前谢谢了。

4

2 回答 2

0

不太可能,但这可能是由您$experiment['import_result']if上面的陈述中设置的方式引起的。例如 if$sheet未设置或为空,$experiment['import_result']将不会设置,因为没有else. 尝试添加额外的else {$experiment['import_result'] = FALSE;}.

foreach($experiment as $sheet){
    if(isset($sheet) && !empty($sheet)){
        if(isset($sheet['error']) && !empty($sheet['error'])){
            $experiment['import_result'] = FALSE;
        }elseif(isset($sheet['validation']['validation']) && $sheet['validation']['validation'] == 0){
            $experiment['import_result'] = FALSE;
        }else{
            $experiment['import_result'] = TRUE;
        }
    }
    else {$experiment['import_result'] = FALSE;} // added
}
于 2012-10-21T03:33:50.530 回答
0

问题解决了。我逐块删除代码,最后发现当我上传文件时,其中一条 if 语句被其上方的注释意外注释掉了。我想这可能是服务器有问题。奇怪的。

于 2012-10-22T12:48:56.747 回答