У меня установлена библиотека UNOCONV на моем CentOS 7.3.16.11. Когда я запускаю преобразование файлов из CLI, все работает нормально, и я получаю PDF-документ обратно:
unoconv -d spreadsheet --format=pdf -o temp/ ./document.docx
Но когда я пытаюсь выполнить его из PHP 5.6.29, он не дает мне никакого выходного PDF. Я получаю сообщение об ошибке из среды Python:
Traceback (most recent call last):
File "/usr/bin/unoconv", line 1196, in <module>
run()
File "/usr/bin/unoconv", line 1108, in run
office_environ(of)
File "/usr/bin/unoconv", line 202, in office_environ
os.environ['PATH'] = realpath(office.basepath, 'program') + os.pathsep + os.environ['PATH']
File "/usr/lib64/python2.7/UserDict.py", line 23, in \__getitem__
raise KeyError(key)
KeyError: 'PATH'
Проверил пути в моей среде с:
echo $PATH
Выход:
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/username/.local/bin:/home/username/bin
Что может быть не так с запуском UNOCONV из php?
Помимо выяснения, как правильно установить PATH при использовании php, вы можете взломать скрипт unoconv и изменить строку 1174 из
os.environ['PATH'] = realpath(office.basepath, 'program') + os.pathsep + os.environ['PATH']
в
os.environ['PATH'] = realpath(office.basepath, 'program') + os.pathsep + os.environ['PATH'] if 'PATH' in os.environ.keys() else ''
Других решений пока нет …