ФорумПрограммированиеPHP для идиотов → Из PHP в WORD

Из PHP в WORD

  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 29 января 2010 г. 5:11

    Есть вот такой скрипт

    $word = new COM("word.application") or die ("couldnt create an instance of word");
    echo "Загружено , версия word {$word->version}";
    $word->visible = 1;
    //открываем документ
    $word->Documents->Add();
    //добавляем текст в документ
    $word->Selection->TypeText("this is some sample text in the document");
    //сохраняем документ как sampleword.doc
    $word->Documents[1]->SaveAs("C:\Sites\home\localhost\www\gm\sampleword.doc");
    //закрывает документ Word.
    $word->Quit();
    //освобождаем ресурсы объекта
    $word->Release();
    $word = null;
    header ("Location: http://localhost/gm/sampleword.doc");


    Сам скрипт работает, но немного странно как мне кажется. Если запустить файл отдельно то все срабатывает. Если например скрипт расположить на странице index.php и открыть ее, то возникает ошибка "Fatal error: Maximum execution time of 30 seconds exceeded in C:\Sites\home\localhost\www\gm\index.php on line 17"
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 29 января 2010 г. 5:19, спустя 7 минут 26 секунд

    Если запустить файл отдельно то все срабатывает.
    какой файл? Скрипт?
    Покажите как вы отдельно запускаете.

    А в index.php еще что-то кроме этого куска скрипта есть?
    adw/0
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 29 января 2010 г. 5:22, спустя 2 минуты 51 секунду

    В index.php ничего кроме этого кода нет. Ну и когда было тоже не работало. ))
    Ну как отдельно? В папке gm лежит у меня файл index.php Жму на него мышкой и открывает вордовский файл.
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 29 января 2010 г. 5:53, спустя 30 минут 47 секунд

    а если запустить так?
    php -f index.php
    adw/0
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 29 января 2010 г. 6:14, спустя 21 минуту 27 секунд


    а если запустить так?
    php -f index.php



    А это как так ?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 29 января 2010 г. 6:16, спустя 1 минуту 57 секунд

    Это в консоли
    adw/0
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 29 января 2010 г. 6:19, спустя 2 минуты 49 секунд

    стыдно спросить … а как ее запустить… никогда не пользовался просто
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 29 января 2010 г. 6:24, спустя 5 минут 42 секунды

    win + R cmd
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 29 января 2010 г. 7:38, спустя 1 час 13 минут 45 секунд

    так работает


    а если запустить так?
    php -f index.php



    А это как так ?

    так работает
    Спустя 248 сек.
    У меня там строчка такая была

    fatal error: Uncaught exception 'com_exception' width message 'Error [0x80020003]'

    Может у меня из библиотеками что-то не то?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 29 января 2010 г. 7:48, спустя 10 минут 12 секунд

    smv, то есть вы запустили из консоли - все работает. А запускаете из под веб-сервера и не работает?
    Один и тотже скрипт?
    adw/0
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 29 января 2010 г. 7:55, спустя 6 минут 14 секунд

    Да верно… из консоли работает. А из под веб сервера не работает.
    Спустя 222 сек.
    в браузере вот это пишет Fatal error: Maximum execution time of 30 seconds exceeded in C:\Sites\home\localhost\www\gm\index.php on line 17
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 29 января 2010 г. 8:16, спустя 21 минуту 30 секунд

    smv, выставите побольше
    set_time_limit(600);
    или вообще ограничение отключите
    set_time_limit(0);
    Спустя 24 сек.
    может просто на это надо больше чем 30 сек времени…
    Спустя 84 сек.
    А вообще ваше решение только под виндами и будет работать, поэтому если надо кроссплатформенное, то почитайте тут http://habrahabr.ru/blogs/php/72745/
    а вообще, я бы юзал RTF http://habrahabr.ru/blogs/php/70119/
    adw/0
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 29 января 2010 г. 8:36, спустя 20 минут 16 секунд

    если ограничение времени убрать совсем то пишет вот это

    Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `word.application': Ошибка при выполнении приложения-сервера ' in C:\Sites\home\localhost\www\gm\index.php:3 Stack trace: #0 C:\Sites\home\localhost\www\gm\index.php(3): com->com('word.applicatio…') #1 {main} thrown in C:\Sites\home\localhost\www\gm\index.php on line 3


    А вообще ваше решение только под виндами и будет работать, поэтому если надо кроссплатформенное, то почитайте тут http://habrahabr.ru/blogs/php/72745/
    а вообще, я бы юзал RTF http://habrahabr.ru/blogs/php/70119/


    Да пока что с этим хотел разобраться

Пожалуйста, авторизуйтесь, чтобы написать комментарий!