无法在 PHP shell_exec() 命令中 运行 inkscape
Unable to run inkscape in PHP shell_exec() command
我有一个 design tool extension that is used on a website I'm working on. The design tool uses 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 在路径)。我可以从 PHP 运行 其他基本的 shell 命令没有问题,像这样:
echo shell_exec('ls');
但现在我不知所措;我不确定还需要检查什么来确定我收到 'command not found' 错误的原因。任何方向都会有所帮助。
服务器(据我所知相当旧):
- CentOS 6.7
- PHP 5.3.3
- Inkscape v0.47
该进程的路径中没有 inkscape 的位置。
您必须提供可执行文件的完整路径。
例子
/usr/bin/inkscape
在命令行输入 'whereis inkscape' 查找位置。
我有一个 design tool extension that is used on a website I'm working on. The design tool uses 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 在路径)。我可以从 PHP 运行 其他基本的 shell 命令没有问题,像这样:
echo shell_exec('ls');
但现在我不知所措;我不确定还需要检查什么来确定我收到 'command not found' 错误的原因。任何方向都会有所帮助。
服务器(据我所知相当旧):
- CentOS 6.7
- PHP 5.3.3
- Inkscape v0.47
该进程的路径中没有 inkscape 的位置。
您必须提供可执行文件的完整路径。
例子
/usr/bin/inkscape
在命令行输入 'whereis inkscape' 查找位置。