【问题标题】:PHP, unexpected T_IF, expecting T_FUNCTION in xxx file on line xxxPHP,意外的 T_IF,在第 xxx 行的 xxx 文件中需要 T_FUNCTION
【发布时间】:2012-10-11 06:32:18
【问题描述】:

很奇怪,我在本地主机上运行了代码,但是当我将它部署在远程服务器上时。它得到了 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()

请帮助定位问题。非常感谢。

【问题讨论】:

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

标签: php parse-error


【解决方案1】:

不太可能,但这可能是您在上面的if 语句中设置$experiment['import_result'] 的方式造成的。例如,如果$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
}

【讨论】:

  • 感谢您的快速回复。我通过逐块删除代码来解决这个问题。终于找到了问题所在。在我的源代码中,有几行 cmets。不知道为什么在部署代码时,if() 语句之一被意外注释掉了。现在我使用 /**/ 代替 // 来注释掉。它对我没有任何影响。无论如何,已经解决了,谢谢你的帮助。 PS:我的远程服务器是hostgator
  • 请给自己发一个答案并接受它,@user1310312。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-23
    • 2014-02-09
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    相关资源
    最近更新 更多