代码之家  ›  专栏  ›  技术社区  ›  spencerready

无法在PHP shell_exec()命令中运行inkscape

  •  -1
  • spencerready  · 技术社区  · 9 年前

    我有一个 design tool extension inkscape 用于导出图像的命令行。有一个php接口可以处理命令行操作,最终调用 shell_exec($inkscapeCmd) 。在注意到图像文件没有被导出后,我创建了一些测试来尝试调试。我将执行行更改为 shell_exec($inkscapeCmd . ' 2>&1') 要查看错误消息:

    sh: inkscape: command not found

    …这很奇怪,因为它绝对是安装好的并且可以访问。我在测试页面上为用户添加了一个检查,以确保命令是由访问inkscape的用户执行的:

    $processUser = posix_getpwuid(posix_geteuid()); echo 'user: ' . $processUser['name'];

    然后我通过ssh进入服务器,确认我可以运行与该用户相同的命令,并且能够在没有任何问题的情况下运行这些命令(这也证实了inkscape位于PATH中)。我可以从PHP运行其他基本shell命令,而不会出现问题,如下所示:

    echo shell_exec('ls');

    但现在我不知所措;我不确定还需要检查什么来确定为什么会出现“command not found”错误。任何方向都会有帮助。

    服务器(我知道很旧):

    • 中央操作系统6.7
    • 5.3.3比索
    1 回复  |  直到 9 年前
        1
  •  1
  •   Jason K    9 年前

    进程的路径中没有墨水景观的位置。

    您必须提供可执行文件的完整路径。

    实例

    /usr/bin/inkscape

    在命令行中键入“whereis inkscape”以查找位置。