Запустить слово на сервере для работы COM? - PullRequest
1 голос
/ 25 марта 2010

Я получил это с сайта php.net. Это связано с проблемой, с которой я сталкиваюсь, с помощью кода ниже. Может кто-нибудь объяснить мне, что делает следующее. Я использую Vista. Что означает запуск Word на сервере?

Чтобы получить пример Word работает, сделайте следующее на серверная сторона. Работал на меня ... 1. Нажмите START -> RUN и введите «dcomcnfg» 2. На вкладке «Приложения» перейдите в «Документ Microsoft Word». 3. Нажмите кнопку СВОЙСТВА 4. Перейдите на вкладку «Безопасность» 5. Нажмите «Использовать пользовательские разрешения доступа», а затем нажмите «РЕДАКТИРОВАТЬ». 6. Нажмите ДОБАВИТЬ, а затем нажмите ПОКАЗАТЬ ПОЛЬЗОВАТЕЛЕЙ 7. Выделите учетную запись анонимного пользователя IIS (обычно IUSR_), нажмите ДОБАВИТЬ 8. Вернитесь на вкладку «Безопасность», нажав OK. 9. Нажмите «Использовать пользовательские разрешения на запуск», а затем нажмите РЕДАКТИРОВАТЬ 10. Нажмите ДОБАВИТЬ, а затем нажмите ПОКАЗАТЬ ПОЛЬЗОВАТЕЛЕЙ 11. Выделите учетную запись анонимного пользователя IIS (обычно IUSR_), нажмите ДОБАВИТЬ 12. Нажмите OK, а затем нажмите APPLY.

Кроме того, вы должны посмотреть на Вкладка «Идентичность» в Microsoft Word СВОЙСТВА Документируйте и убедитесь, что это установлен на «Интерактивный пользователь»

ТАКЖЕ, войдите в машину КАК IUSR_ аккаунт, запуск слово, и не забудьте нажать через диалоговые окна, которые Word показывает первый раз он запускается для определенного пользователь. Другими словами, убедитесь, что Word открывается чисто для пользователя IUSR_.

<?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 ]

2 голосов
/ 25 марта 2010

Когда пользователь получает доступ к веб-странице, работающей на вашем сервере (странно, что веб-сервер работает под Vista - это среда разработки?), Программное обеспечение веб-сервера (Microsoft Internet Information Systems или IIS) отвечает на этот запрос: запуск процесса (в вашем случае PHP). В Windows все процессы должны выполняться под учетной записью пользователя. В приведенных выше примерах кода подробно описывается, как дать разрешение учетной записи пользователя IIS для запуска Microsoft Word.

Инструкции по запуску Word просто устраняют неполадки - убедитесь, что пользователь, который запускает Word в ответ на запросы веб-страниц, действительно может запустить Word.

Код загружает COM-сервер, который обеспечивает функциональность Microsoft Word, добавляет текст и сохраняет документ. Инструкции ранее были необходимы, поскольку на веб-сервере будет работать интерпретатор PHP под учетной записью пользователя IIS, а PHP запускает сервер Word COM, пользователю IIS необходимо предоставить разрешения для запуска объекта COM.

Что касается вопроса о последствиях, я не думаю, что есть какие-либо последствия для безопасности, если вы должным образом санируете и проверяете пользовательский ввод - использование Word мало что меняет в плане безопасности. Тем не менее, у вас есть потенциально ОГРОМНОЕ ограничение производительности. Для загрузки COM-сервера Word может потребоваться много времени, и если между запросами к вашей веб-странице возникает перерыв, COM-система может выгрузить COM-сервер Word, в результате чего он полностью перезагружается при следующем запросе.

1 голос
/ 25 марта 2010

Спасибо за ваши ответы. Я решил проблему с помощью этого: http://www.phpbuilder.net/columns/venkatesan20030501.php3?

...