ID:               19156
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Open
+Status:           Closed
 Bug Type:         COM related
 Operating System: Windows XP
 PHP Version:      4.2.2
 New Comment:

This bug has been fixed in CVS.

In case this was a PHP problem, snapshots of the sources are packaged
every three hours; this change will be in the next snapshot. You can
grab the snapshot at http://snaps.php.net/.
 
In case this was a documentation problem, the fix will show up soon at
http://www.php.net/manual/.

In case this was a PHP.net website problem, the change will show
up on the PHP.net site and on the mirror sites in short time.
 
Thank you for the report, and for helping us make PHP better.




Previous Comments:
------------------------------------------------------------------------

[2002-09-19 09:30:11] [EMAIL PROTECTED]

OS: W2K Pro
With PHP 4.2.2 & 4.2.3 it appears that accessing array-properties has a
devastating effect, it will crash Apache, at least on my machine.

PHP 4.1.2a does not crash, but does not terminate the COM-Objects as
noted.

The workaround does work.

------------------------------------------------------------------------

[2002-08-28 12:38:00] [EMAIL PROTECTED]

I forgot to provide the following data:
I'm using PHP as a module for Apache 1.3.26 win32.
The sample code was tested using OfficeXP.

------------------------------------------------------------------------

[2002-08-28 12:31:19] [EMAIL PROTECTED]

When writing applications instancing COM objects I always faced the
problem of the instanced program not terminating correctly although
everything else worked fine. In fact the process had to be killed
manually by using the task manager. Browsing some messageboards I found
out I was not the only one and began to investigate the problem. I
finally was able to isolate the cause for this peculiar behaviour to be
illustrated by the sample code below:

<?php

//Accessing arrays by retrieving elements via function ArrayName(Index)
works, but certainly is neither efficient nor good style
$excel=new COM("Excel.Application");
$excel->sheetsinnewworkbook=1;
$excel->Workbooks->Add();

$book=$excel->Workbooks(1);
$sheet=$book->Worksheets(1);

$sheet->Name="Debug-Test";
$book->saveas("C:\\debug.xls");

$book->Close(false);
unset($sheet);
unset($book);
$excel->Workbooks->Close();
$excel->Quit();
unset($excel);

//Accessing arrays as usual (using the [] operator) works, buts leads
to the application not being able to terminate by itself
$excel=new COM("Excel.Application");
$excel->sheetsinnewworkbook=1;
$excel->Workbooks->Add();

$excel->Workbooks[1]->Worksheets[1]->Name="Debug-Test";
$excel->Workbooks[1]->saveas("C:\\debug.xls");

$excel->Workbooks[1]->Close(false);
$excel->Workbooks->Close();
$excel->Quit();
unset($excel);

?>

The sample code performs the same action twice and each time the file
is properly created. Yet for some mysterious reason the instanced excel
process won't terminate once you've accessed an array the way most
programmers (especially those who do a lot of oop in c++) do!

------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=19156&edit=1

Reply via email to