tags:

views:

121

answers:

2

I got this from php.net website. This is related to the problem I am having with tho code below. Can anyone explain me what the following does. I am using Vista. What does running Word on server implies?

In order to get the Word example running, do the following on the server side. Worked for me... 1. Click START-->RUN and enter "dcomcnfg" 2. In the "Applications" tab, go down to "Microsoft Word Document" 3. Click PROPERTIES button 4. Go to the "Security" Tab 5. Click "Use custom access permissions", and then click EDIT 6. Click ADD and then click SHOW USERS 7. Highlight the IIS anonymous user account (usually IUSR_), click ADD 8. Go back to the "Security" tab by hitting OK 9. Click "Use custom launch permissions", and the click EDIT 10. Click ADD and then click SHOW USERS 11. Highlight the IIS anonymous user account (usually IUSR_), click ADD 12. Hit OK, and then hit APPLY.

Also, you should look at the "Identity" tab in the Microsoft Word Document PROPERTIES and see that it is set to "Interactive User"

ALSO, log into the machine AS the IUSR_ account, start word, and make sure to click through the dialog boxes that Word shows the first time it is run for a certain user. In other words, make sure Word opens cleanly for the IUSR_ user.

<?php
    // starting word
    $word = new COM("word.application") or die("Unable to instantiate Word");
    echo "Loaded Word, version {$word->Version}\n";

    //bring it to front
    $word->Visible = 1;

    //open an empty document
    $word->Documents->Add();

    //do some weird stuff
    $word->Selection->TypeText("This is a test...");
    $word->Documents[1]->SaveAs("Useless test.doc");


    //closing word
    $word->Quit();

    //free the object
    $word = null;
    ?>
+2  A: 

When a user accesses a webpage running on your server (odd to be running a web server under Vista - is this a development environment?), the web server software (Microsoft Internet Information Systems, or IIS) responds to that request by running a process (in your case, PHP). Under Windows, all processes have to run under a user account. The instructions given above your code sample detail how to give permission to the IIS user account to run Microsoft Word.

The instructions for starting Word are just troubleshooting - verify that the user that's going to run Word in response to web page requests really can start Word.

The code loads the COM server that provides Microsoft Word functionality, adds some text, and saves the document. The instructions previously were necessary because, since the web server will be running the PHP interpreter under the IIS user account, and PHP starts the Word COM server, the IIS user needs to be given permissions to start the COM object.

As far as a question of the implications, I don't think there are any security implications, so long as you properly sanitize and validate user input - using Word doesn't change much in regards to security. However, you have a potentially MAJOR performance bottleneck. The COM server for Word may take a long time to load, and if there is a break between requests to your webpage, the COM system may unload the Word COM server, resulting in it being reloaded entirely on the next request.

Dathan
+1  A: 

Thanks for your replies. I solved the problem by using this : http://www.phpbuilder.net/columns/venkatesan20030501.php3?

chupinette