我正在学校服务器上为学校开发一个网站。我的网站使用 unoconv。由于某种原因,它直到今天都正常工作。基本上,如果我在控制台中运行此命令,就会发生以下情况:
unoconv powerpoint.pptx
它给出了这个错误:错误:无法连接或启动自己的监听器。中止。
但适用于:
sudo unoconv powerpoint.pptx
unoconv 是 777,所有权是 www-data:www-data,但它也无法通过网站工作。
pgrep -l 'office|writer|calc'
显示没有冲突,并且: unoconv --listener & 不能解决问题
我还应该做什么来调查?
答案1
@Erik Stagg,我知道已经晚了,但确实要与其他用户一起使用 unoconv,您可以在另一个进程中使用 sudo 保持打开一个端口:
$ sudo unoconv --listener
同时该进程正在运行,您可以以普通用户身份使用 unoconv:
$ unoconv -f docx file.doc
答案2
我刚刚遇到了同样的问题,发现这个链接非常有用:
简而言之,/etc/sudoers
用您最喜欢的编辑器打开该文件并找到以下行:
root ALL=(ALL) ALL
像这样在其下方添加一个新行:
root ALL=(ALL) ALL
user.name ALL=NOPASSWD: /path_to_your_program_bin_file
因此,要从 apache 运行 unoconv,您需要类似这样的操作:
root ALL=(ALL) ALL
apache ALL=NOPASSWD: /usr/bin/unoconv
让 apache 用户进入 sudoers 文件是否是个好主意又是另外一个问题,但也不要忘记 sudo 权限仅限于特定的程序。Apache 不能使用 sudo 运行任何东西:只能运行 unoconv 程序。