Re: Excel OLE Automation using COM: file access problem
| From: | Richard Quadling | Date: | Mon, 18 May 2009 12:23:35 +0000 |
| Subject: | Re: Excel OLE Automation using COM: file access problem | ||
| References: | 1 | Groups: | php.windows |
| Request: | Send a blank email to php-windows+get-29339@lists.php.net to get a copy of this message | ||
2009/5/18 Faubry, Samuel <Samuel.Faubry@parexel.com>:
> Hi,
>
> I am interfacing PHP and Excel to build a web-based reporting tool. I am running IIS6.0 with
> PHP 5.2.5 on Windows Server 2003, with Office 2003 installed.
>
> For testing purpose, I wrote a script that just connects to Excel, opens a workbook, saves it
> under another name and closes Excel:
>
> $if_path = 'C:\if_test.xls';
> $of_path = 'C:\of_test.xls';
>
> echo date('H:i:s') . " Launch Excel application \n";
> $excelApp = new COM("Excel.Application") or die("Cannot create an Excel
> object");
> echo date('H:i:s') . " Loaded Excel, version {$excelApp->Version}\n";
>
> echo date('H:i:s') . " Open workbook at path $if_path\n";
> $excelApp->Workbooks->Open($if_path, 2);
>
> echo date('H:i:s') . " Save changes to $of_path\n";
> $excelApp->Workbooks[1]->SaveAs($of_path);
>
> echo date('H:i:s') . " Close Excel\n";
> $excelApp->Quit();
>
> When I open the page in Internet Explorer, if I put
> "http://localhost/test.php", everything works fine, but if
> I put "http://my_server_name.domain.int/test.php", the
> script is blocked when trying to open the file, which means I can't access the script elsewhere
> than on the server.
>
> By "blocked", I mean no error is shown, but it doesn't react, and the excel.exe
> task keeps running and keeps the file locked.
>
> My guess is that Excel is run with different permissions in the second case, so it cannot
> access the file, but it might be completely something else....
>
> Does someone have any experience in that matter ?
>
> Thank you very much !
>
>
If it is permissions, TEMPORARILY, allow IIS to interact with the
desktop. Hopefully you can RDP to the server as the console and see
what error message pops up (if any).
As PHP and excel run on the server, you will need to see the server
for any errors that can be displayed in this regard.
I don't think you'll be able to do this on server 2008 as the
"console" is no longer displayed (session 0 is purely for internal use
only - services and the like - and no display is allowed).
--
-----
Richard Quadling
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
"Standing on the shoulders of some very clever giants!"