【发布时间】:2016-07-07 18:27:57
【问题描述】:
我有一个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');
但现在我不知所措了;我不确定还要检查什么来确定为什么我会收到“找不到命令”错误。任何方向都会有所帮助。
服务器(相当旧,我知道):
- CentOS 6.7
- PHP 5.3.3
- Inkscape v0.47
【问题讨论】:
-
为什么这被否决了?我以为我问了一个合理的问题,最终得到了我想要的答案;设计工具需要可执行文件的路径(在配置文件中定义不正确)。
标签: php linux shell-exec inkscape