我使用 CentOS 基本服务器上 CentOS 存储库中的 yum 安装了 libreoffice.x86_64。从 shell 运行以下命令时,出现以下 X11 错误。xhost 已安装在我的机器上,但 X 似乎没有安装。是什么原因导致了此错误,我该如何修复它?
[root@desktop ~]# HOME=/tmp/ayb; /usr/bin/libreoffice --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_12.xlsx
/usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display:
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)
[root@desktop ~]#
编辑
根据评论,我做了以下操作,错误消失并且文档被转换。
[root@desktop ~]# yum install tigervnc-server
[root@desktop ~]# vncserver :0
[root@desktop ~]# HOME=/tmp/ayb; /usr/bin/libreoffice -display :0 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_34.doc
我的最终目标是通过 Apache 使用 PHP 来运行此命令。尝试这样做时,它没有转换,也没有收到任何错误或反馈。然后我尝试使用不同的用户执行相同的命令,但遇到了类似的问题。有什么建议吗?
-sh-4.1$ HOME=/tmp/ayb; /usr/bin/libreoffice -display :0 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_34.doc
No protocol specified
No protocol specified
/usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display: :0
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)
-sh-4.1$
编辑2
如果我重新启动服务器并vncserver :0
在其他用户下执行操作,然后尝试转换文档,它就会无限期挂起。
编辑3
尝试了设置和不设置显示的向导,但都不起作用。也许是某种权限问题?
[NotionCommotion@laptop root]$ HOME=/tmp/ayb; /usr/bin/libreoffice -display :0 --nofirststartwizard --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_34.doc
/usr/lib64/libreoffice/program/soffice: line 68: cd: /root: Permission denied
No protocol specified
No protocol specified
/usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display: :0
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)
[NotionCommotion@laptop root]$ HOME=/tmp/ayb; /usr/bin/libreoffice --nofirststartwizard --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_34.doc
/usr/lib64/libreoffice/program/soffice: line 68: cd: /root: Permission denied
/usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display:
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)
[NotionCommotion@laptop root]$
答案1
这是一个老问题,但我今天自己遇到了它。使用“--headless”的技巧是您需要安装 libreoffice-headless(即:)yum install libreoffice-headless
。并非所有 libreoffice 安装都安装了 libreoffice-headless - 例如,我今天的安装。
在 user1032531 发布的链接中发现了这个隐藏的信息。
如果在没有适当包的情况下使用 --headless 会产生这样的错误那就太好了,但事实并非如此。
答案2
如果你要使用无头模式,那么你不需要 X。请参阅在用户 apache 下使用 LibreOffice 将文件转换为 PDF(即使用 PHP 时)寻找可行的解决方案。
答案3
https://www.centos.org/forums/viewtopic.php?t=21514
yum install openoffice.org-headless