2013-06-04 33 views
0

我想写一个PHP脚本来运行一个相当简单的shell命令。该命令是Pygmentize,它是我安装的一个二进制文件,位于/usr/local/bin/pygmentize-1.4。这在我的web服务器(apache服务器中的目录)的命令行中工作正常,但是当我试图将该语句包含在PHP脚本中时,它失败。从PHP脚本运行安装的二进制文件(作为apache)

$command = "pygmentize -f html $extra_opts -l $language $temp_name"; 
$output = array(); 
$retval = -1; 

exec($command, $output, $retval); 
echo $retval; 

的命令返回值127,这似乎意味着脚本无法找到二进制文件,我想我安装了错误的位置。我将它安装到与PHP脚本位于同一目录中的目录中,但我不知道该从哪里去。任何建议将不胜感激!

我想总结一下,我如何安装Pygments以便我的脚本可以访问它?

+0

使用的完整路径,例如'“/ path/to/pygmentize ...”。请记住,Apache中的exec()将具有与标准登录shell相比不同的shell环境(包括$ PATH)。 –

+0

尝试运行它为'__DIR __。“/ pygmentize -f html $ extra_opts -l $ language $ temp_name”' – Orangepill

+0

您可能还需要调用putenv来获取命令可能需要的任何环境变量 – Orangepill

回答

0

使用完整路径,因为PHP在另一个用户运行,./当该用户执行脚本不是apache目录:

$command = "/usr/local/bin/pygmentize-1.4-f html $extra_opts -l $language $temp_name"; 
+0

是的,修复。脚本正在工作,谢谢! – pdt2383

相关问题