Unusual behaviour opening Word document

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View
If I do not have the indicated Word document open (on my Win XP Pro
machine with PHP 5.2), the following will open and display it:

  $path = "c:\path\to\word\document\mydoc.doc";
  $doc = new COM($path);
  $doc->Application->visible = true;

However, there will be several identical warnings (14 in number)
associated with line 3 (the new COM line):

Warning: com::com(): Type library constant emptyenum is already defined
in C:\test.php on line 3

Am I getting lucky that the doc is opened at all (and hence the
warnings are not bugs), or should this behaviour be reported?  This
type of functionality works fine in vbscript:

Path = "c:\path\to\word\document\mydoc.doc"
Set doc = CreateObject(Path)
doc.Application.visible = true

Csaba Gabor from Vienna

PS.  Note that if the doc is already opened, the above scripts fail.

Re: Unusual behaviour opening Word document

Csaba Gabor wrote:
Quoted text here. Click to load it

OK, this doesn't have anything to do with the specific document.  It
also happens if you just do:
$word = new COM("Word.Application");

Initial indications are that the following will suppress the warnings:

$c_artext = "com.autoregister_typelib";
if ($c_ar_t=ini_get($c_artext)) ini_set($c_artext,0);
$word = new COM("Word.Application");
if ($c_ar_t) ini_set($c_artext, $c_ar_t);

Re: Unusual behaviour opening Word document

*** Csaba Gabor escribió/wrote (24 Jul 2006 05:27:59 -0700):
Quoted text here. Click to load it

According to PHP manual, COM constructor doesn't expect a file name:

com COM::COM ( string module_name [, mixed server_name [, int codepage [,
string typelib]]] )

Can be a ProgID, Class ID or Moniker that names the component to load.  

A ProgID is typically the application or DLL name, followed by a period,
followed by the object name. e.g: Word.Application.  

A Class ID is the UUID that uniquely identifies a given class.  

A Moniker is a special form of naming, similar in concept to a URL scheme,
that identifies a resource and specifies how it should be loaded. As an
example, you could load up Word and get an object representing a word
document by specifying the full path to the word document as the module
name, or you can use LDAP: as a moniker to use the ADSI interface to LDAP.  

In my computer, the code just crashes PHP interpreter.

-+ http://alvaro.es - Álvaro G. Vicario - Burgos, Spain
++ Mi sitio sobre programación web: http://bits.demogracia.com
+- Mi web de humor con rayos UVA: http://www.demogracia.com

Re: Unusual behaviour opening Word document

Alvaro G. Vicario wrote:
Quoted text here. Click to load it

That's why I posted.  It wasn't entirely clear to me whether my
construct was legal under PHP.  But, if you read my subsequent post,
you saw that that was not what the errors were due to.
Quoted text here. Click to load it

The code I gave was for PHP 5.2 on Win XP Pro (and Word 2003).
The calls with COM code are significantly different for PHP 5 vs. PHP

What machine/PHP/Word are you using?

Site Timeline