Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP脚本运行已安装的二进制文件(作为apache)_Php_Apache_Pygments - Fatal编程技术网

从PHP脚本运行已安装的二进制文件(作为apache)

从PHP脚本运行已安装的二进制文件(作为apache),php,apache,pygments,Php,Apache,Pygments,我试图编写一个PHP脚本来运行一个相当简单的shell命令。命令是Pygmentize,它是我安装的二进制文件,位于/usr/local/bin/Pygmentize-1.4中。这在我的web服务器(apache服务器中的目录)的命令行中运行良好,但当我尝试在PHP脚本中包含该语句时,它失败了 $command = "pygmentize -f html $extra_opts -l $language $temp_name"; $output = array(); $retval = -1;

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

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

exec( $command, $output, $retval );
echo $retval;
该命令返回值127,这似乎意味着脚本找不到二进制文件,我想我安装到了错误的位置。我将它安装到与PHP脚本位于同一个目录中的目录中,但我不确定从那里走到哪里。任何建议都将不胜感激


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

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

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

使用完整路径,例如,
“/path/to/pygmentize…”
。请记住,Apache中的exec()将具有与标准登录shell不同的shell环境(包括$PATH)。请尝试将其作为
\uuuu DIR\uuuu..'/pygmentize-f html$extra\u opts-l$language$temp\u name“
运行,您可能还需要调用putenv来获取该命令可能需要的任何环境变量