Документы ВОРД из PHP: таблицы не вставляются

elrevin

Новичок
Документы ВОРД из PHP: таблицы не вставляются

Доброго Вам времени суток, господа.
Уже почти разбил лоб об монитор, решая проблему - вот простой код:
PHP:
<?php
$Word=new COM('word.application');   
$Word->Documents->Add();   
$Word->Documents[1]->Tables->Add($Word->Selection->Range,3,3);   
$Word->Visible=1; 
?>
Все очень просто и замечательно работает, пока выполняешь это в ZDE, попытка же обращения к скрипту посредством браузера приводит к следующему:
Fatal error: Uncaught exception 'com_exception' with message 'Unable to lookup `Tables': Вызов был отклонен. '

на всякий случай: офис 2007-й

Поможите если кто сталкивался с таким, очень надо :(

-~{}~ 19.01.09 23:45:

Последние "эксперименты" показали - проблема с вызовом методов и с обращением к свойствам документа:
PHP:
$Word->Documents[1]->SaveAs("c:\\doc1.doc");
или
PHP:
$Word->ActiveDocument->SaveAs("c:\\doc1.doc");
Приводит вот к чему:
Fatal error: Call to undefined method variant::SaveAs()
Причем этот же код прекрасно выполняется отладчиком зенд студии: и таблицы вставляются и документ сохраняется...
 

elrevin

Новичок
Вот это-то и интересно, с командной строки все работает, а вот при обращении с браузера - ошибки лезут
 

dimagolov

Новичок
что-то мне подсказывает, что не из командной строки это из под сервиса апача, который не имеет GUI и поэтому ворд из под него жить не способен.
точно не уверен, но если апачу разрешить работу с GUI то должно заработать и так.
 

DiMA

php.spb.ru
Команда форума
> что-то мне подсказывает, что не из командной строки это из под сервиса апача, который не имеет GUI и поэтому ворд из

У меня Апач и пхп модуль отлично работают с СОМ (Ворд, Эксель).
 

DiMA

php.spb.ru
Команда форума
нет, иначе бы апач маячил черным окном на рабочем столе, но он не маячит

работает, естественно, без $Word->Visible=1
(+нужно изредка убивать зависшие копии Экселя)
 

x-yuri

Новичок
о, теперь у меня
Fatal error: Uncaught exception 'com_exception' with message 'Unable to lookup `Tables': Вызов был отклонен. '
)))
 

elrevin

Новичок
Автор оригинала: dimagolov
DiMA, у тебя при этом стоит галка "Allow Service to communicate with Desktop" ?
Где она должна стоять?

Автор оригинала: x-yuri
а com_print_typeinfo($Word->Documents[1]) сообщает о наличии SaveAs?
com_print_typeinfo($Word->Documents[1]) и com_print_typeinfo($Word->ActiveDocument):
Warning: Unable to find typeinfo using the parameters supplied in D:\gsmesh\www\word\wd.php on line 7

а вот com_print_typeinfo($Word) показывает наличие и Documents и ActiveDocument
 

dimagolov

Новичок
с офисом 2007 могут быть самые разные нюансы. он зараза проверяет лицензию на использование GUI, то есть для WinServer 2008 это не только CAL, а если работаем через RDP то и RDP-CAL, которые всегда надо покуапть отдельно (если насетапили сервер как RDP server).

это я к чему. стоит попробовать с более старым офисом.

-~{}~ 19.01.09 15:39:

elrevin, да не должна она стоять. это было предположение, которое не подтвердилось. хотя... для 2007-го офиса может и должна.
тут могут разве что быть нюансы с тем, от какого юзера пускается апач, SYSTEM может не иметь куда-то доступа.

п.с. речь о свойствах сервиса
 

DiMA

php.spb.ru
Команда форума
Office 2003, работает:

<?php
$Word=new COM('Word.Application');
$Word->Documents->Add();
$Word->Documents[1]->Tables->Add($Word->Selection->Range,3,3);
$Word->Documents[1]->SaveAs("c:\\doc1.doc");
$Word->Documents->Close();
$Word->Quit();
$Word=NULL;
?>

Галочку можно поставить в свойства службы Апач. Там же нужно заменить SYSTEM на специально созданного юзера для Апача, у которого урезаны права (но достаточны для работы).
 

elrevin

Новичок
Спасибо...

сделал пользователя, запустил под ним апач, реакция на SaveAs стала такой:
Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft Word<br/><b>Description:</b> Ошибка команды'
com_print_typeinfo($Word->Documents[1]) говорит что SaveAs есть...
попробую снести 2007-й и поставить 2003-й офис, теперь возможно в нем все дело
 

x-yuri

Новичок
судя по тому, что у тебя создался документ, дело все-таки в правах. И вряд ли переустановка поможет, хотя попробуй
 
Сверху