【问题标题】:Unoconv as apache user unable to create filesUnoconv 作为 apache 用户无法创建文件
【发布时间】:2015-05-11 12:59:38
【问题描述】:

我使用 unoconv 作为 apache 用户来创建 PDF 文件。它作为终端用户运行良好,但是当我作为 apache 用户运行它时。我收到错误。

sudo -u apache  /usr/bin/unoconv -o /home/gloryque/tmp/1431347151.pdf -f pdf /home/gloryque/tmp/8.doc

我遇到错误

mkstemp("/usr/share/httpd/.execoool7VwpU") failed: Permission denied
mkstemp("/usr/share/httpd/.execooouoUVdw") failed: Permission denied
mkstemp("/usr/share/httpd/.execooopRuy27") failed: Permission denied
mkstemp("/usr/share/httpd/.execooov92dRJ") failed: Permission denied
mkstemp("/usr/share/httpd/.execoooiZZVFl") failed: Permission denied
mkstemp("/usr/share/httpd/.execooowk5LuX") failed: Permission denied
mkstemp("/usr/share/httpd/.execoooCgtDjz") failed: Permission denied
mkstemp("/usr/share/httpd/.execoooLxXy8a") failed: Permission denied
mkstemp("/usr/share/httpd/.execooo8LCvXM") failed: Permission denied

我在 centos 7 机器上

【问题讨论】:

    标签: linux apache shell centos7


    【解决方案1】:

    我推荐以下:

    • 使用最新版本的 unoconv(发布时至少为 v0.7,或者今天来自 GitHub 的 master 分支)

    • 使用 LibreOffice 的最新稳定版本(最新版本使用更少的内存,通常速度更快且崩溃更少)

    • 使用原生 LibreOffice python 二进制文件来运行 unoconv,例如。 /opt/libreoffice4.4/program/python /usr/bin/unoconv -f pdf file.doc

    • 在 unoconv 脚本 shebang 中硬编码 python 路径,所以放在第一行 #!/opt/libreoffice4.4/program/python 而不是 #!/usr/bin/env python。 (Apache/PHP一般不设置PATH,所以unoconv失败)

    • 确保运行 unoconv 的用户有权访问其 HOME 目录

    如果您执行上述操作,一切都会正常进行。如果 LibreOffice 仍然崩溃,您应该在上游项目中解决这个问题。另请注意,LibreOffice 不能同时处理多个连接/客户端,因此理想情况下,您的 PHP 脚本应该正确锁定和/或排队请求。

    如果您仍有任何问题,请报告至:http://github.com/dagwieers/unoconv/issues

    【讨论】:

      【解决方案2】:

      unoconv 尝试在/usr/share/httpd 中写入一些临时数据。它显然没有权限这样做。

      在我的测试中(在 Ubuntu 系统上),HOME 环境变量一直是关键点。使用

      HOME=/tmp sudo -u apache  /usr/bin/unoconv -o /home/gloryque/tmp/1431347151.pdf -f pdf /home/gloryque/tmp/8.doc
      

      暂时将HOME 设置为/tmp 解决了这个问题。

      apache 用户还需要将结果数据写入目标目录/home/gloryque/tmp 的权限。

      【讨论】:

      • 这样做是从终端作为 apache 用户运行,而不是从 php 文件。我在 CentOS 7
      猜你喜欢
      • 2017-10-24
      • 2011-07-05
      • 2017-03-04
      • 1970-01-01
      • 2021-12-16
      • 2011-01-18
      • 2022-08-23
      • 1970-01-01
      • 2016-11-27
      相关资源
      最近更新 更多