【问题标题】:UNOCONV failing to convert files in PHP on CentOSUNOCONV 无法在 CentOS 上转换 PHP 文件
【发布时间】:2019-11-21 22:28:08
【问题描述】:

我的 CentOS 7.3.16.11 上安装了 UNOCONV 库。当我从 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

从 php 运行 UNOCONV 会出现什么问题?

【问题讨论】:

  • 没有为运行 php 的用户设置 PATH。

标签: php centos centos7 shell-exec unoconv


【解决方案1】:

除了弄清楚如何在使用 php 时正确设置 PATH 之外,您还可以破解 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 ''

【讨论】:

  • github 上可用的 unoconv 当前版本以类似的方式处理此问题。
猜你喜欢
  • 1970-01-01
  • 2019-03-31
  • 2021-10-13
  • 2012-07-10
  • 2019-08-09
  • 1970-01-01
  • 2017-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多