COM объект перестал работать PHP

297
23 апреля 2017, 01:53

Здравствуйте. На сервере стоял "Windows NT WEB2003 5.2 build 3790 (Windows Server 2003 Enterprise Edition Service Pack 2) i586" поменяли на "Windows NT WEB 6.1 build 7601 (Windows Server 2008 R2 Datacenter Edition Service Pack 1) i586" и теперь в программе, который стоит в этом сервере, перестал работать заполнение документа Excel то есть выдает ошибку 500. Версия php, компоненты сервера все тот который стояла на старом сервере.

Код который работает в старом сервере:
$Excel = new COM( 'Excel.Application' ) or die("Unable to instanciate excel");
$Excel->AskToUpdateLinks = false;
$Excel->Visible = 0;
$Excel->DisplayAlerts = 0;
$Excel->Workbooks->Open( $file );
$cnt = $Excel->Sheets->Count();
for($ww=1; $ww<=$cnt; $ww++){
    $WorkSheet = $Excel->Worksheets($ww);
    $WorkSheet->activate;
    $LastCell = $WorkSheet->Cells->SpecialCells(11);
    $LastRow = $LastCell->Row;
    $LastCol = $LastCell->Column;
    for($i=1; $i<=$LastRow; $i++){
        for($j=1; $j<=$LastCol; $j++){
            $Cell = $WorkSheet->Cells( $i, $j );
            $Value = $Cell->Text;
            preg_match_all('/(%.*?%)/s', $Value, $matches);
            foreach($matches[0] as $match){
                if(in_array($match, array_keys($Params)))
                    $Value = str_replace($match, $Params[$match], $Value);
                else{
                    if(preg_match('/%date_priem_last_(.*?)%/s', $Value, $out)){
                        $days = $out[1];
                        list( $d2, $m2, $y2 ) = explode( '.', $Params['%date_priem_last%'] );
                        $Value = str_replace( $out[0], date("d.m.Y", mktime(0, 0, 0, $m2, ($d2+$days), $y2)), $Value );
                    }
                    else
                        $Value = str_replace($match, ' ', $Value);
                }
            }
            $Cell->Value = $Value;
        }
    }
}
$WorkSheet = $Excel->Worksheets(1);
$WorkSheet->activate;
$filename = realpath( tempnam( dirname( __FILE__ ) . '/tmp', 'a' ) );
unlink( $filename );
$Excel->ActiveWorkbook->SaveAs( $filename );
$Excel->Quit();
$Excel = Null;
clearstatcache();
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=" . $Arguments['template'] );
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: public");
$handle = fopen($filename, "r");
echo fread($handle, filesize($filename));
fclose($handle);
unlink( $filename );

Может кто то подскажет какая проблема может быть? Заранее спасибо!

READ ALSO
Call to a member function rowCount() on boolean

Call to a member function rowCount() on boolean

PHP Fatal error: Uncaught Error: Call to a member function rowCount() on boolean in /var/www/html/indexphp:30\nStack trace:\n#0 {main}\n thrown in /var/www/html/index

426
Php, почему не окрашивает слово привет?

Php, почему не окрашивает слово привет?

Вот такой код, выводится просто слово "Привет", подскажите, что я делаю не так ?

302
Не срабатывает функция

Не срабатывает функция

Помогите решить проблему

394