IIS, PHP, COM

Airiz

Guest
IIS, PHP, COM

Здраствуйте.

Нужно выполнить вызов Word из РНР.

Код:
$word=new COM("word.application") or die("Couldn't start Word!");

Выводит сообщение:
Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `C:/word.doc': Отказано в доступе. ' in c:\Inetpub\wwwroot\KOt\com.php:7 Stack trace: #0 c:\Inetpub\wwwroot\KOt\com.php(7): com->com('C:/word.doc') #1 {main} thrown in c:\Inetpub\wwwroot\KOt\com.php on line 7

Смотрела на форумах, документации. Изменяла настройки в ini. Все равно та же ошибка.
Заранее благодарю.
 

chulim

Новичок
дай права юзеру под которым работает iis на создание com
утилита dcomcnfg или оснастка в mmc
 

Airiz

Guest
Извините, это сообщение выходит:

Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `word.application': Отказано в доступе. ' in c:\Inetpub\wwwroot\KOt\com.php:4 Stack trace: #0 c:\Inetpub\wwwroot\KOt\com.php(4): com->com('word.applicatio...') #1 {main} thrown in c:\Inetpub\wwwroot\KOt\com.php on line 4

Но по моему это похожие ошибки.

дай права юзеру под которым работает iis на создание com
утилита dcomcnfg или оснастка в mmc
В логах тоже выводится ошибка о том что пользователю IVANOVA\IUSR_IVANOVA отказанов доступе и нужно дать разрешение. Я так понимаю, что пользователь работающий по IIS м есть IVANOVA\IUSR_IVANOVA. Захожу в Component Services, но там непонятно где нужно это сделать.

Спасибо.
 

chulim

Новичок
Computers->My Comp -> DCOM Config -> Документ ms word открываем свойства и вкладка разрешения (кажется) выставляем права на юзера
 

Airiz

Guest
Я сделала так:

Запустила dcomcnfg.exe. Там выбрала Компьютеры->Мой компьютер->Настройка DCOM->Документ Word-> Свойства. Тмам во вкладке Безопасность Во всех пунктах добавила пользователя IVANOVA\IUSR_IVANOVA и дала ему все права.

В коде пишу снова

$word=new COM("word.application") or die("Couldn't start Word!"); //(1)
$word->Visible = 1; //(2)
$word->Documents->Add(); //(3)

На что выдает ошибку (на третью строку):

Fatal error: Uncaught exception 'com_exception' with message 'Source: Microsoft Word
Description: Не удается открыть банк макросов.' in c:\Inetpub\wwwroot\KOt\com.php:10 Stack trace: #0 c:\Inetpub\wwwroot\KOt\com.php(10): variant->Add() #1 {main} thrown in c:\Inetpub\wwwroot\KOt\com.php on line 10

То есть проблема теперь в PHP?

Спасибо.
 

Alexandre

PHPПенсионер
Airiz
чтобы проверить, правильно ты вызвал СОМ в РНР или нет - открой СОМ в любой другой среде, например в том же эксплорере:
PHP:
<script language="JavaScript">
function loadActiveX(){
var aX = new ActiveXObject('word.application');
aX.anyMethodOfWordBasic();
}
</script>
<body>
<input type=button onclick=loadActiveX() value=test>
Мне кажется что COM все-таки зарегистрирован под строчкой типа ("Microsoft.Word")... Это смотрится в системном реестре.
 

chulim

Новичок
1. могу ошибаться (нет возможности проверить), но пользователь добавляется типа IVANOVA\IUSR_IIS,
2. что показывает phpinfo() секция COM?
3. не уверен, но возможно поможет изменение настроек безопасности для макросов в самом ворде
 

Alexandre

PHPПенсионер
если выдаст ошибку в строке var aX = new ActiveXObject(), то просто ты вызываешь незарегистрированный СОМ объект.

у меня например сторка для Ворда Word.Application.8
Большие буквы - обязательно и .8 или (.10 )
 

Airiz

Guest
chulim, в phpinfo() следующее:

com.allow_dcom =1
com.autoregister_casesensitive =1
com.autoregister_typelib=1
com.autoregister_verbose=1
com.code_page no value=no value
com.typelib_file=no value

(Что должно стоять в последних двух параметрах?).

В настройках вордовских макросов стоит средняя защита.

Alexandre, JavaScript не работает, выдает "невозможно создать объект сервером программирования объектов".
 

chulim

Новичок
Airiz
должно работать с этими настройками

посмотри здесь
http://support.microsoft.com/kb/q224338/
 

-SkyNet-

Новичок
если "не может создать объект" (Failed to create COM object ), значит дела все-таки в настройках dcomcnfg (уверены, что юзверь тот, который указали?)) или в правильности указания имени приложения, с которым хотите работать (прислушайтесь к совету Alexander'a !!!).

хотя, у меня при неправильном указании идентификатора приложения, воводилась ошибка типа unknown application identifier...

uncaught com_exception - значить поймано нерегламентированное в коде исключение (есессно)

access denied - значит нет доступа.

по-моему, ситуация ясна - нет доступа к приложению (хотя,откуда макросы полезли - вообще непонятно =)).

а у меня всё прекрасно пашет с такими же настройками в ini, со всеми правами в dcomcnfg (там кстати когда вводится имя юзера, есть полезная кнопочка "прверить имена" - непременно ей воспользуйтесь) и php версией 4.4.0

не поленитесь в случае чего переставить софт...

-~{}~ 08.12.05 19:12:

кстати, если апач запускается под другим аккаунтом, 100% аксесс динаед из-за этого
 
Сверху