在ubuntu中通过PHP显示ghostscript版本号

时间:2011-07-08 15:48:59

标签: php ghostscript

我已经编写了以下代码来显示ghostscript的版本号:

<html>
<head>
<title></title>
</head>
<body>
<?

$ver = shell_exec("/usr/bin/gs --version");
//$ver = exec(GS_BIN . " --version");
print "$ver";
print "A";

?>
</body>
</html>

我可以打印A,但不能打印版本号吗?

感谢。

2 个答案:

答案 0 :(得分:2)

可能ghostscrsipt正在将数据写入STDERR而不是STDOUT。尝试做

/usr/bin/gs --version 2>&1 

将stderr重定向到stdout并再试一次

答案 1 :(得分:1)

您应该使用var_dump($ver);进行调试,因为您的代码正常运行:

$ php -r "echo shell_exec('/usr/bin/gs --version');"
8.71

我只是在我的linux机器上运行它并根据shell_exec() Docs,它应该没问题。

要寻找的东西:

  • 是否已启用安全模式?
  • exec()可以返回命令的退出代码/返回状态。
  • 如果它返回NULL,请参阅 this answer

STDERR和shell_exec()

shell_exec()只会返回写入STDOUT的命令输出。如果shell无法调用该命令,则此函数将返回NULL,并将隐藏已报告为错误的内容。

要在返回值中包含错误,需要将STDERR重定向到STDOUT。这是通过在命令末尾添加2>&1来完成的。以下是带有错误演示命令的示例代码:

$ php -r "var_dump(shell_exec('/usr/bin/gs2 --version 2>&1'));"
string(44) "sh: /usr/bin/gs2: No such file or directory
"