Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1494
  • Last Modified:

Anyone make php COM working on WIN7?

I updated my computer from xp to win7.
the php COM do not work now.
Anyone can help?

code:

$excel = new COM("excel.application") or die("Unable to instanciate excel");
$excel->Visible = 0;
$excel->DisplayAlerts = 0;
$excel->Workbooks->Open("C:\projects\test.xls");

Get error:
Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft Office Excel<br/><b>Description:</b> Microsoft Office Excel cannot access the file 'C:\projects\test.xls'. There are several possible reasons: • The file name or path does not exist. • The file is being used by another program. • The workbook you are trying to save has the same name as a currently open workbook
0
Tim
Asked:
Tim
  • 7
  • 3
  • 2
  • +3
1 Solution
 
Eduardo GoicovichIT ConsultantCommented:
you need set appropiate permission in com+

- Run dcomcnfg.exe
- Find excel application and click properties
- Click the Security tab
- Use Custom Access Permissions
- Add the user who runs the php application
- Use Custom Launch permissions
- Add the user who runs the web server service
0
 
TimSenior PHP DeveloperAuthor Commented:
Thanks.
But I can't follow yours.
I run the dcomcnfg.exe , I can't find excel.
Could you give me detail steps.

Thank you very much
0
 
DerokorianCommented:
in dcomcnfg:

Console Root -> Component Services -> Computers -> My Computer -> DCOM Config -> Microsoft Excel Application -> right-click -> properties then belfegor's steps from there.
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
TimSenior PHP DeveloperAuthor Commented:
Thanks.
I did these two permissions change.
But it looks no  change on the result.
I get same error.

Any idea about this.

Thank you!
0
 
RobOwner (Aidellio)Commented:
The problem is not DCOM as the error message was received from the COM Excel Object

I'd check permissions on the file and directory you are trying to access.  My guess is that your IIS user does not have read/write permissions.
0
 
RobOwner (Aidellio)Commented:
To prove it is working:

$excel = new COM("excel.application") or die("Unable to instanciate excel"); 
$excel->Visible = 0;
$excel->DisplayAlerts = 0; 
echo "Excel Version: " . $excel->Version;

Open in new window

0
 
TimSenior PHP DeveloperAuthor Commented:
it shows
Excel Version: 12.0

I use Apache/2.0.63 (Win32) PHP/5.1.6.

The update files function looks ok. So the apache should have permissions.

Any others?

Thanks
0
 
Ray PaseurCommented:
Can you step back from the technical details and just tell us in plain language what you want to do?  There may be a better solution than COM.  Thanks, ~Ray
0
 
TimSenior PHP DeveloperAuthor Commented:
I did loaded the client excel template file and insert the data, then send to the client excel report.
It works fine on winxp and win server 2003.
I would like make it work on win7.

Thanks
0
 
RobOwner (Aidellio)Commented:
What are the permissions on the excel file?  Is it locked by someone else having the sheet open at the same time?
0
 
TimSenior PHP DeveloperAuthor Commented:
The file permissions should ok , I give all " Full control". the sheet do not open at same time.

Thanks
0
 
Eduardo GoicovichIT ConsultantCommented:
HI,

  Can you tell me that account are using to start apache service?

Create directory “C:\Windows\SysWOW64\config\systemprofile\Desktop ” (for 64 bit Windows) or “C:\Windows\System32\config\systemprofile\Desktop ” (for 32 bit Windows)
Set Full control permissions for directory Desktop to the account starting the service
0
 
TimSenior PHP DeveloperAuthor Commented:
Good. It is working now.
Thank you very much!
I just wonder why need create this directory, it's so ...

Thanks again.
0
 
TimSenior PHP DeveloperAuthor Commented:
Good. it is working.
0
 
xaiadaxCommented:
i don't get it. meaning, i have to create a new folder (Desktop) and then set it to Full Control?
can you tell me what does it for?

i 'm also having the same problem.
i'm creating a function that enable user to upload data using excel, and once submitted, the data will get to be imported into MSSQL Server database.

the upload was ok. the excel file got copied into the temp folder in the server. the problem comes when it's time to retrieve data from that excel file into mssql. it was ok before i changed my OS to Windows 7. now everything is a mess.

pls help.
0

Featured Post

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

  • 7
  • 3
  • 2
  • +3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now