【问题标题】:antiword shell command does not work correctly through PHPantiword shell 命令无法通过 PHP 正常工作
【发布时间】:2011-03-06 20:39:41
【问题描述】:

我在 shell 中使用 putty 调用了 antiword,它运行良好。但是,当我使用 shell_exec() 调用它时,它总是给出空字符串。这是我使用的代码:

$file="IS_BT_KLVZ_MSI_001.doc";

$content=shell_exec("/usr/local/bin/antiword /usr/local/apache/htdocs/dokuman_sorgusu/documents/$file");

var_dump($content);

在一个论坛中,我看到了报告的确切问题。有这个问题的人说他解决了这个问题。以下是引文:

“是的,原来是地图文件的可访问性——他们 不是世界可读的, 一旦我更改了权限,它就很好用。谢谢大家”

但是,我不明白他是如何解决问题的,以及我是如何访问和允许那些antiword的地图文件的。

【问题讨论】:

    标签: php unix shell


    【解决方案1】:

    从 shell.. 试试这个

    # chmod o+r /usr/local/apache/htdocs/dokuman_sorgusu/documents/IS_BT_KLVZ_MSI_001.doc
    

    【讨论】:

    • 您正在更改文档的 mod 但是我必须更改 /ust/local/bin/antiword 使用的地图文件的 mod。我无法在我的 php 代码中正确执行 antiword 命令,因为 antiword 无法通过 php 代码使用它的附加映射文件。但是,在我调用它时,在命令 shell 中,antiword 可以完美运行。
    【解决方案2】:

    Web 服务器通常以用户“nobody”的身份运行,该用户拥有最少的权限并且只是一个组(“nogroup”)的成员。

    您的地图文件很可能设置为模式 0640 (-rw-r-----) 并且属于您的登录用户可以访问的组,但网络服务器没有。

    因此,将地图文件设为全球可读允许 Web 服务器打开它们,就像您的登录用户一样,拥有更多权限,已经可以。

    【讨论】:

      猜你喜欢
      • 2013-01-18
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多