Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/75: Рейтинг темы: голосов - 75, средняя оценка - 4.64
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827

PhpWord установка и настройка вручную

13.12.2019, 23:58. Показов 17196. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил разобраться с установкой PhpWord в ручном режиме потому что увидел готовое решение для работы с шаблонами, думал скачаю и не буду заморачиваться, буду просто пользоваться. Скачал "исходники" не с GitHub. По идее в этих исходниках все настроено нормально, во многом совпадает с настройкой на stackoverflow. В видео, прилагаемом к этим исходникам тоже вроде как все совпадает. Но ругается на имя из собственного поля имен классов
PHP
1
Fatal error: Cannot use PhpOffice\PhpWord\Shared\String as String because 'String' is a special class name in \library\phpword\TemplateProcessor.php on line 23
вот index.php. Он лежит в корне
PHP
1
2
3
4
5
6
7
8
set_include_path(get_include_path().PATH_SEPARATOR.realpath(__DIR__."/library/")); 
require_once 'config.php';
function __autoload($name_class) {require_once $name_class.'.php';} //автозагрузка классов из папки
$object = new stdClass(); // Создаём объект
foreach( $_REQUEST as $key=>$val )  $object->$key = sanitize($val); //получаем переменные
$word= new Word();
foreach ($object as $key=>$val) $data[$key]=$val;
$word->generate($data);
Вот место из TemplateProcessor.php, лежит по пути library\phpword\TemplateProcessor.php. 23 строка - это строка про String
PHP
1
2
3
4
5
6
7
8
9
namespace PhpOffice\PhpWord;
 
use PhpOffice\PhpWord\Exception\CopyFileException;
use PhpOffice\PhpWord\Exception\CreateTemporaryFileException;
use PhpOffice\PhpWord\Exception\Exception;
use PhpOffice\PhpWord\Shared\String;  // на эту строку ругается
use PhpOffice\PhpWord\Shared\ZipArchive;
 
class TemplateProcessor
Вот кусок из файла с собственным классом, который создал автор "исходников" и где как я понимаю внутри его класса создается объект класса PhpWord
PHP
1
2
3
4
5
6
    public function __construct() {         
        //подключаем PHPWord для работы с вордовскими файлами
        require_once (realpath(__DIR__."/phpword/Autoloader.php"));
        \PhpOffice\PhpWord\Autoloader::register();
        $this->phpword = new  \PhpOffice\PhpWord\PhpWord();
    }
Я конечно ещё не вдавался в изучение ООП, но читал, что "new" нужно именно с путями прописывать. Хотя, если прописать
PHP
1
$this->phpword = new  library\PhpOffice\PhpWord\PhpWord();
то выдает следующую ошибку:
PHP
1
Class 'library\PhpOffice\PhpWord\PhpWord' not found
Как все таки правильно настроить PhpWord в такой ситуации? Автор "исходников" молчит. А я боюсь, что не осилю самостоятельную настройку генерирования доковского шаблона. А очень надо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.12.2019, 23:58
Ответы с готовыми решениями:

Установка phpword через composer
Помогите, пожалуйста, не могу найти в чем проблема, при установке phpword через composer выдает ошибку: ...

Настройка библиотеки PHPWord
Добрый день, подскажите пожалуйста как установить PHPWord. Имеется бесплатный хостинг, залил туда весь архив, но он не работает. Дайте...

Joomla установка шаблона вручную
Есть копия сайта, на котором уже была установлена Джумла и установлен шаблон. Мне необходимо воссоздать сайт со всей инфой, что на нем...

21
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
14.12.2019, 18:08
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Но ругается на имя из собственного поля имен классов
Вам нужно либо понизить версию php, либо обновить библиотеку PhpWord
1
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
15.12.2019, 22:15  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
Вам нужно либо понизить версию php, либо обновить библиотеку PhpWord
Это вы меня озадачили ))) Знаю, что давно нужно было разобраться с ручной установкой php, но пока не заморачивался, ставил xampp и был доволен. Теперь попробовал тупо заменить содержимое папки в "исходниках" на свежескачаный вариант PhpWord с GitHub, но получил фаталэрор. Ругается на класс, я так понимаю, перевода кодировки. Причем если смотреть поле имен, то такой папки с таким файлом нет ни в "исходниках", ни в старой версии PhpWord, ни в новой.
PHP
1
Uncaught Error: Class 'PhpOffice\Common\Text' not found in ...\word1\library\phpword\TemplateProcessor.php:255
Нет вот этого: Common\Text
Причем в модуле, который есть в этих "исходниках" вроде своя рабочая функция перекодировки.

Добавлено через 14 минут
Решил закоментировать все строки в TemplateProcessor.php касающиеся перевода кодировки и заработало. Не знаю, на сколько корректно, и вылезут ли в будущем какие-то бока, связанные с этим, но пока вроде работает )
Но хотелось бы знать, вообще правильно я поступил, или это чистое везение?
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
15.12.2019, 22:48
Цитата Сообщение от DyadyaGe Посмотреть сообщение
попробовал тупо заменить содержимое папки в "исходниках" на свежескачаный вариант PhpWord с GitHub
Зачем? Это же одной командой делается composer require phpoffice/phpword Он же вам и автозагрузчик классов нормальный сгенерирует.
0
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
15.12.2019, 22:57  [ТС]
Цитата Сообщение от tarasalk Посмотреть сообщение
Зачем? Это же одной командой делается
Так там свой автолоадер есть и свой класс написан, внутри которого уже PhpWord. Если я конечно правильно понимаю. Вот эти строки в классе (отдельная функция):
PHP
1
2
3
4
5
6
    public function __construct() {         
        //подключаем PHPWord для работы с вордовскими файлами
        require_once (realpath(__DIR__."/phpword/Autoloader.php"));
        \PhpOffice\PhpWord\Autoloader::register();
        $this->phpword = new  \PhpOffice\PhpWord\PhpWord();
    }
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
15.12.2019, 23:06
Видимо у вас все еще старая версия, потому что в последней версии этого нет.
Вот актуальная.

В истории обновлений за 2016 нашел такой комментарий.

Manual installation support. Since the release we have dependencies on third party libraries, so installation via ZIP-archive download is not an option anymore. To install PHPWord use Composer. We also removed \PhpOffice\PhpWord\Autoloader, because the latter change made it completely useless. Autoloaders provided by Composer are in use now (see bootstrap.php).
Вкратце, они добавили зависимости от внешних библиотек и теперь установка возможна только через композер.
0
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
15.12.2019, 23:27  [ТС]
Цитата Сообщение от tarasalk Посмотреть сообщение
Видимо у вас все еще старая версия, потому что в последней версии этого нет
Чего нет? Это функция, которую автор "исходников" написал сам. Причем тут установка через композер?
Цитата Сообщение от tarasalk Посмотреть сообщение
теперь установка возможна только через композер
Да, но у меня работает без всяких композеров и именно та версия, на которую вы указали. Я именно оттуда и качал. Потом просто заменил содержимое папки PhpWord в "исходниках" на папку из src с GitHub. Закинул автолоадер. Заменил в config.php (создан автором "исходников") пару мест с "mysql_дальше чего-то там" на "mysqli_дальше чего-то там" и пока работает. Думаю тоже самое было бы, если б захотел поставить без композера и без того модуля (класса), что автор написал для создания шаблонов.
Кстати. Я не большой знаток, но можно ли как-то с помощью композера в PhpWord прикрутить именно этот класс для создания шаблонов?
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
16.12.2019, 07:41
Цитата Сообщение от DyadyaGe Посмотреть сообщение
? Это функция, которую автор "исходников" написал сам
И этот же автор удалил ее еще в 2016) Ну если работает то ок, я бы просто костыли не делал.
0
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
16.12.2019, 13:58  [ТС]
Цитата Сообщение от tarasalk Посмотреть сообщение
Ну если работает то ок, я бы просто костыли не делал
Почему сразу костыль? Функция то сделана для создания шаблонов доковских файлов. А как он устанавливал не было написано. И я так понял, что особого значения не имеет. И может мы о разных авторах говорим? я то качаю "исходники" спокойно с его блога, но там архив за 2015. Хотя видел ответы за 2018.
У меня в другом вылезла проблема. При открытии созданного файла ругается, что файл поврежден. Понятно, что где-то пролезли html теги, но не могу избавиться. Опять же, читал, что возможно необходимо прописать exit, но так и не понял куда.
0
63 / 34 / 8
Регистрация: 07.02.2015
Сообщений: 125
20.12.2019, 14:29
DyadyaGe,
Не поймите превратно мой вопрос.
Какая религия мешает вам использовать актуальную версию скрипта?
Вам Тарасалк как бы намекает громко, что киа оптима 2019 модельного года вытерпит интеграцию карбюратора до ближайшего сервиса. Или столба
0
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
20.12.2019, 18:45  [ТС]
Цитата Сообщение от AlexNewaro Посмотреть сообщение
Какая религия мешает вам использовать актуальную версию скрипта?
Ни что не мешает и уже давно поставил через композер. Пробовал и так и так. Но проблема осталась. Но в любом случае не вижу костылей в том, чтобы ручным методом поставить свежую версию. Тот же файл бутстрап всего навсего прописывает путь к лоадерам, что я и делал и все работало. Или почти все. Хотя сомневаюсь, что проблема сохранения файла зависит от способа установки.
Ну а проблема с сохранением файла к сожалению осталась. Тарасалк мне советовал разбить на функции, чтоб увидеть ошибку, но видимо я что-то не так делаю. Видимо проблема в заголовках, потому что автосохранение работает нормально.
Вот тема по сохранению шаблона (вроде ж правилами форума не запрещено давать ссылки на свои же темы форума, тем более она отличается от этой, значит одинаковые темы не пложу)
PhpWord: создание ссылки для сохранения-скачивания шаблона. Видимо проблема с заголовками или путями
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
21.12.2019, 00:27
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Но в любом случае не вижу костылей в том, чтобы ручным методом поставить свежую версию
Кажется вы не понимаете зачем нужен композер. Это не просто скачивание библиотеки. Это фиксирование зависимостей. Другой программист возьмет ваш проект, выполнит команду composer install и все зависимости автоматически поставятся. Так же одной командой composer update можно обновить эти зависимости. Плюс много других плюшек. А если вы там что-то вручную поменяли, то это только у вас и останется.
0
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
21.12.2019, 01:03  [ТС]
Цитата Сообщение от tarasalk Посмотреть сообщение
Кажется вы не понимаете зачем нужен композер
Да поставил я композер. Смысл в этом какой, если проблема осталась?
И про зависимости тоже понимаю. Но с другой стороны нужно разбираться и в том, и в том. Почему нельзя чисто для себя разобраться, в том числе и для лучшего понимания работы композера?
0
1 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 223
25.01.2022, 16:40
Здравствуйте.
Нашёл инструкцию по пользованию библиотекой тут
Но там через vendor
Как вручную подключить библиотеку?

PHP
1
2
3
include_once 'PhpOffice/PhpWord/PHPWord.php';
    
$word = new PHPWord();
Такого рода подключение не работает
PHP
1
Fatal error: Uncaught Error: Class 'PHPWord' not found in E:\OpenServer\domains\test.ru\11\index.php:5 Stack trace: #0 {main} thrown in A:\OpenServer\domains\test.ru\11\index.php on line 5
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
25.01.2022, 18:43
Цитата Сообщение от Ser8191 Посмотреть сообщение
Но там через vendor
Чем плохо? Установите через композер.
0
1 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 223
25.01.2022, 19:22
На машине, на которую нужно установить, нет возможности подключить интернет, только перекинуть с флешки.
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
25.01.2022, 19:39
Ser8191, Установите через composer там где есть интернет, и закиньте на флешку.
1
1 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 223
27.01.2022, 10:50
Спасибо
0
67 / 1 / 0
Регистрация: 10.04.2019
Сообщений: 54
19.05.2022, 10:40
Что за композер и как без него установить?
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
19.05.2022, 12:06
Riokanen, попросите более компетентного разработчика скачать эту библиотеку со всеми зависимостями и отправить вам архивом. Останется только include 1 файла сделать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.05.2022, 12:06
Помогаю со студенческими работами здесь

Установка драйверов на Windows 10 вручную
В среде ПК далеко не ноль, но после установки чистой десятки стал вопрос об установки дров. Раньше обходился dps'ом, но заметил большое...

Правильная установка тем вручную
Скачал вот эту тему и несколько других.Устанавливал через Сменить фон рабочего стола ->Темы -> Установить. Остальные установились, а...

Настройка TCP/IP сети вручную из командной строки
Как удалить настройки TCP/IP сети вручную из командной строки? (Вернуть в начальное положение:"Получить IP-адрес...

Установка, настройка X Server. Установка пользовательской среды GNOME. Настройка, работа в пользовательской среде GNOME
Задали курсач. Необходимо разобраться во всем выше перечисленном. Нужно поэтапное решение данной задачи

qt 5.0.0 установка и настройка
решил qt поизучать (надоело в сибилдере) 1.скачал и установил mingw 2. скачал и установил qt 5.0.0 3. пытаюсь настроить компиляцию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru